我试图模仿下面的方法,目的是有声纳覆盖-
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的新手,但我认为正在发生的事情是,测试只是传递空值,但它甚至没有击中所需的方法沿着所需的参数。
1条答案
按热度按时间2o7dmzc51#
如果你想测试
getName
方法,DAO
的instance不应该是mock。Mock对象主要用于将被测方法与其协作者隔离。从mock示例中复制一个方法只会做它被告知要做的事情。方法的实际执行不会发生。因此,你在sonar中看不到覆盖范围。必须创建
DAO
类的实际示例,以执行您尝试测试的方法。字符串