[英]Mock method in abstract class that inherit abstract class
我的 spring-boot 項目中有一個擴展抽象類的服務
public class TestService extends AbstractTest1Service {
// some methods
}
public abstract class AbstractTest1Service extends AbstractTest2Service {
public String doSomething() {
return writeText();
}
}
public abstract class AbstractTest2Service {
String writeText() {
return "text";
}
}
當我想測試TestService
時,有什么方法可以模擬writeText()
方法:
您的TestService
類:
public class TestService extends AbstractTest1Service {
AbstractTest2Service abstractTest2Service;
public String doSomething() {
abstractTest2Service.writeText();
System.out.println("Passed!");
return "All Checked";
}
}
您的TestServiceTest
類應該是這樣的:
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class TestServiceTest {
@InjectMocks
TestService testService;
@Mock
AbstractTest2Service abstractTest2Service;
@Test
public void testService(){
Assert.assertEquals("All Checked",testService.doSomething());
}
}
注意:不要使用
@Spy
而不是@Mock
,Spy 將嘗試檢查不存在的抽象類方法的實際實現,因此您的測試將被忽略。 只需使用@Mock
。
使用@Spy 會報錯:
無法為“
abstractTest2Service
”字段實例化@Spy
。 您尚未提供用於在字段聲明中進行監視的實例,因此我嘗試構建該實例。 但是,我失敗了,因為:類型 'AbstractTest2Service
是一個抽象類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.