我必須在類中測試一個方法。但是這個類本身有一些內部屬性和方法被繼承和保護。JUnit,Mockito和Powermock訪問受保護的本地方法
如果事實上,我有什麼是:
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
任何人可以幫助我嗎?
檢查這一項 https://stackoverflow.com/questions/34571/how-do-i-test-a-class-that-has-private-methods-字段或內部類 – Treibholz