目录

一、异常错误二、原因三、解决方法方法1.去除单元测试方法中的参数方法2.使用参数化测试@ParameterizedTest

一、异常错误

想根据Id查询信息,在Junit单元测中报错

@Select("select * from ce_questions where id = #{id};")

List queryAuditDetailsById(@Param("id") Integer id);

@Test

public void queryAuditDetailsById(Integer id){

List queryAuditDetailsById = ceQuestionsMapper.queryAuditDetailsById(1);

System.out.println(queryAuditDetailsById);

}

org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.lang.Integer id] in method [public void com.ahead.CExperimentPlatform.LiaoTest.queryAuditDetailsById(java.lang.Integer)].

二、原因

@Test 单元测试方法中不允许添加参数

三、解决方法

方法1.去除单元测试方法中的参数

将(Integer id)删除即可,但这样必须手动添加调用方法中的id,并且只能测试查询单条数据,比如我要查询id=1的数据,就只能手动在括号里添加1

@Test

public void queryAuditDetailsById(){

List queryAuditDetailsById = ceQuestionsMapper.queryAuditDetailsById(1);

System.out.println(queryAuditDetailsById);

}

方法2.使用参数化测试@ParameterizedTest

如果我要查询多条数据,自定义参数的话,可以使用参数化测试@ParameterizedTest

当然并不是直接使用,否则会报错,需要配置参数的值

org.junit.platform.commons.PreconditionViolationException: Configuration error: You must configure at least one set of arguments for this @ParameterizedTest

@ParameterizedTest需要配合 @ValueSource使用,@ValueSource用于简单用例的参数化,支持string,int等多种类型,类型均为数组

填入对应的参数,即可查询到需要的数据了

@ParameterizedTest

@ValueSource(ints = {1,2,3})

public void queryAuditDetailsById(Integer id){

List queryAuditDetailsById = ceQuestionsMapper.queryAuditDetailsById(id);

System.out.println(queryAuditDetailsById);

}

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: