0
我有一個抽象方法checkStatus()
,它在Checker.java類中有實現。但是當我在抽象類方法validate()
上執行Junit測試用例時,由於缺少Checker.java類中的彈簧依賴關係,因此調用checkStatus()
失敗。Junit測試用例對抽象方法失敗
詳情如下。
抽象類:
public abstract class MyAbstractClass
{
protected abstract boolean checkStatus();
public boolean validate()
{
//Some code
return checkStatus();
}
}
實現類:
public class Checker extends MyAbstractClass
{
@Autowired
private StatusHelper helper;
public void setHelper(StatusHelper helper){
this.helper = helper;
}
@Override
public boolean checkStatus() throws Exception{
if(null == helper){
throw new Exception("Helper is null");
}
return helper.validateStatus();
}
}
JUnit測試:
class AbstractClassTest
{
MyAbstractClass absClass = Mockito.mock(Checker.class, Mockito.CALLS_REAL_METHODS);
@Test
public void testStatusOfChecker()throws Exception {
boolean status = absClass.validate();
assertEquals(status, true);
}
}
我相信我可以手動注入輔助對象,像下面的
Checker check = mock(Checker.class);
StatusHelper helper = mock(StatusHelper.class);
check.setHelper(helper);
但這裏的問題是,我不能直接注入absClass
對象,因爲setHelper()
未被繼承。
我可以改爲直接寫測試用例到子類,但我需要這種方法來測試抽象類的validate()
方法中的一些其他功能。
有人可以幫助我如何設置輔助對象的子類或有不同的方式來做到這一點在Junit嗎?任何包含相關信息的幫助或鏈接都是非常可觀的。 謝謝,