模拟 JUnit 未检测到返回字符串的方法的任何声纳覆盖范围

问题描述 投票:0回答:1

我正在尝试模拟以下方法,目的是获得声纳覆盖范围 -

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

java mockito junit5
1个回答
0
投票

如果要测试

getName
方法,
DAO
的实例不应该是模拟。模拟对象主要用于将被测方法与其协作者隔离。从模拟实例调用方法仅执行被告知执行的操作。该方法的实际执行不会发生。因此,您看不到声纳的覆盖范围。

必须创建

DAO
类的实际实例才能执行您尝试测试的方法。

DAO dao = new DAO();
© www.soinside.com 2019 - 2024. All rights reserved.