我正在尝试模拟以下方法,目的是获得声纳覆盖范围 -
public String getName(String prmTableName) {
GetParameterRequest parameterRequest = new GetParameterRequest();
String absParamStorePath = env.getProperty("amazon.aws.parameter") + prmTableName + "/"
+ env.getProperty("amazon.aws.env");
parameterRequest.withName("/someurl")
parameterRequest.withName(absParamStorePath).setWithDecryption(Boolean.valueOf(true));
GetParameterResult parameterResult = awsSimpleSystemsManagement.getParameter(parameterRequest);
System.out.println("Parameterstore Table Response: " + parameterResult.getParameter().getValue());
return parameterResult.getParameter().getValue();
}
以下是我的测试实现
@Mock
DAO dao
@BeforeEach
public void setup(){
MockitoAnnotations.initMocks(this);
mockmvc= MockMvcBuilders.standaloneSetup(dao).build();
}
@Test
public void testName(){
String value="";
when(dao.getName("storeName"))
.then(t->value);
}
但是当我通过声纳运行它时,我得到的覆盖率为 0%。任何人都可以阐明可能出了什么问题吗?我是 Mockito 的新手,但我认为正在发生的事情是测试只是传递空值,但它甚至没有命中所需的方法以及所需的参数。
如果要测试
getName
方法,DAO
的实例不应该是模拟。模拟对象主要用于将被测方法与其协作者隔离。从模拟实例调用方法仅执行被告知执行的操作。该方法的实际执行不会发生。因此,您看不到声纳的覆盖范围。
必须创建
DAO
类的实际实例才能执行您尝试测试的方法。
DAO dao = new DAO();