Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理

文章讲述了在使用Junit进行单元测试时遇到的参数异常问题。问题在于@Test注解的方法不允许直接包含参数。解决方案包括移除方法参数或者使用@ParameterizedTest结合@ValueSource进行参数化测试,以便测试不同ID的数据查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、异常错误

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

    @Select("select * from ce_questions where id = #{id};")
    List<CeQuestions> queryAuditDetailsById(@Param("id") Integer id);

在这里插入图片描述

    @Test
    public void queryAuditDetailsById(Integer id){
        List<CeQuestions> 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<CeQuestions> 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<CeQuestions> queryAuditDetailsById = ceQuestionsMapper.queryAuditDetailsById(id);
        System.out.println(queryAuditDetailsById);
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yeats_Liao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值