当前位置: 首页 > 知识库问答 >
问题:

Junit5错误。您必须为此@ParameterizedTest提供至少一个参数

鲜于岳
2023-03-14

我试图在JUnit 5中开发一个参数化测试,如下例所示。

@ParameterizedTest
@ArgumentsSource(ArgClassProvider.class)
void testAction_shouldSmth(ArgClass argClass) {
   //...
}


class ArgClassProvider implements ArgumentsProvider {

    @Override
    public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception {
        return Stream.of(new ArgClass(), new ArgClass()).map(Arguments::of);
    }
}

尝试运行测试导致异常:

java.lang.NoSuchMethodException: com.ots.platform_sl.service.config.service.EarnMilesServiceTestHotels$ArgClassProvider.<init>()
...
org.junit.platform.commons.util.PreconditionViolationException: Configuration error: You must provide at least one argument for this @ParameterizedTest
...

您必须为此@ParameterizedTest提供至少一个参数

这个信息让我觉得,我做错了什么,不是吗?

p、 我有一个假设,只有原语类型的参数可用。

共有1个答案

袁法
2023-03-14

使ArgClassProvider成为静态或顶级类。

请仔细查看错误消息:

java.lang.NoSuchMethodException:
com.ots.platform_sl.service.config.service.EarnMilesServiceTestHotels$ArgClassProvider.<init>()

这里可以看到,Jupiter无法为ArgClassProvider找到无参数构造函数。原因是它是一个非静态的内部类,这意味着它的隐式构造函数将外部类的一个实例(在本例中为EarnMilesServiceTestHotels)作为参数。

要为您的ArgumentsProvider实现提供所需的无参数构造函数,您有两个选项:

  • 让它成为一门合适的课程
  • 使其静态,这样它就不再引用外部类的实例,并且隐式构造函数不接受任何参数
 类似资料:
  • 我正在试图理解JUnit 5,并借助一个带有JUnit 5的FizzBuzz应用程序。下面是一个测试用例 通过引发以下异常,此测试用例无法执行 根本原因可能是什么?

  • 我正在实现开玩笑来测试我的React应用程序,并在我的实用程序函数上设置了一个简单的测试,但我得到了错误: 错误:您的测试套件必须至少包含一个测试。 我已经检查了我的实现,我认为一切都是正确的-有人能看一下我吗? 测试和函数的文件结构如下 如下所示: 和: 然后在我的package.json脚本中有,但出现以下错误: 谢谢大家:) 注意:是中的一个输入错误,但在修复后,我收到一个新错误:

  • 我使用如下所示的导出来服务我的模型: 然后,我发出以下POST请求(原始正文): {“错误”:“您必须用dtype float\n\t[[节点:Placeholder_1=placeholder_output_shapes=[],dtype=dt_float,shape=,_device=\”/job:localhost/replica:0/task:0/device:cpu:0\“]]为占位符张

  • 在测试我的Controller类时,我遇到了这个异常 我的控制器测试类如下所示 我的引导类 我的依赖项如下所示 IllegalArgumentException:必须至少存在一个JPA元模型没有解决我的问题

  • 嗨,我正在创建一个简单的注册表单与django框架和mongodb。以下是我的观点: 以下是我的模型: 下面是我的<code>表单。py</code> 以下是加载 SignUpview 回溯时收到的回溯值错误: 内部 39 中的文件“C:\程序文件\Python35\lib\site-packages\django\core\处理程序\exception.py”。响应 = get_response

  • 问题内容: 在开始使用spring rest时,我得到了如下错误 用下面的代码 以下是我的pom.xml UTF-8 UTF-8 1.8 请帮我。我不知道如何解决这个错误 问题答案: 你已添加 在你的pom.xml中。 Spring Boot会尝试自动为JPA创建实体工厂,但是你尚未定义有关JPA模型的任何内容。 尝试将其删除,以测试到目前为止你做了什么。