mockito 模拟JUnit没有检测到返回字符串的方法的任何声纳覆盖

s4n0splo  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(121)

我试图模仿下面的方法,目的是有声纳覆盖-

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的新手,但我认为正在发生的事情是,测试只是传递空值,但它甚至没有击中所需的方法沿着所需的参数。

2o7dmzc5

2o7dmzc51#

如果你想测试getName方法,DAO的instance不应该是mock。Mock对象主要用于将被测方法与其协作者隔离。从mock示例中复制一个方法只会做它被告知要做的事情。方法的实际执行不会发生。因此,你在sonar中看不到覆盖范围。
必须创建DAO类的实际示例,以执行您尝试测试的方法。

DAO dao = new DAO();

字符串

相关问题