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

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();

Java相关问答推荐

如何在SystemiccationRetryListenerSupport中获得类级别的spring retryable annotation中指定的标签?

SQlite for Android无法使用json_group_array/json_object

在Java Stream上调用collect方法出现意外结果

现场观看Android Studio中的变化

关于泛型的覆盖规则

Java:使用Class.cast()将对象转换为原始数组

Java流传输一个列表并创建单个对象

如何从JNI方法正确调用NSOpenPanel以在正确的线程上运行?

在Java 17中使用两个十进制数字分析时间时出错,但在Java 8中成功

基于配置switch 的@Controller的条件摄取

Java 21中泛型的不兼容更改

如何处理两个几乎相同的XSD文件?

用于Java的Visual Studio代码完成不起作用

如何制作回文程序?

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

如何在右击时 Select 新行?

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

rest api服务 spring 启动中出现IllegalFormatConversionException

如何正确使用java.time类?

OpenAPI Maven插件生成错误的Java接口名称