[英]JUnit, Mockito and Powermock to access protected, local method
我必須在一個類中測試一個方法。 但是類本身具有一些繼承和保護的內部屬性和方法。
如果有的話,我所擁有的是:
public class MyActionTest {
@Test
public void goToSearchBaseTest() {
MyAction myAction = new MyAction();
myAction.search();
assert (true);
}
}
然后
public class MyAction extends BaseAction{
...
public ActionForward search(){
if(this.getLog().isDebugEnabled()) {
this.getLog().debug("init --> search()");
}
}
}
最后
public class BaseAction{
...
protected Log log;
...
public ActionForward execute( ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response )
throws Exception {
...
log = LogFactory.getLog( this.getClass() );
...
}
因此,我的小測試在第一行中斷了:嘗試訪問記錄器,但我無法訪問它(也沒有放置模擬記錄器),因為它是在父類中創建的,之前是無法修改的。
我通常的JUnit和Mockito技巧還不夠,而且我對powermock的了解不多
有人可以幫我嗎?
試試看
@RunWith(PowerMockRunner.class)
@PrepareForTest(LogFactory.class)
public class MyActionTest {
@InjectMocks
MyAction myAction ;
@Mock
Log log
public void setUp() throws Exception {
PowerMockito.mockStatic(LogFactory.class);
PowerMockito.when(LogFactory.getLog(any(BaseAction.class))).thenReturn(log);
@Test
public void goToSearchBaseTest() {
myAction.search();
assert (true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.