java config_error ai_generated true

参数解析异常:构造函数中参数 [int arg0] 没有注册的 ParameterResolver

org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [int arg0] in constructor

ID: java/junit-parameterized-test-no-source

其他格式: JSON · Markdown 中文 · English
80%修复率
84%置信度
0证据数
2025-03-05首次发现

版本兼容性

版本状态引入弃用备注
8+ active

根因分析

参数化测试方法或构造函数有参数,但缺少 @ValueSource 或其他源注解。

English

Parameterized test method or constructor has parameters but no @ValueSource or other source annotation.

generic

解决方案

  1. 95% 成功率 Add @ValueSource with values
    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void testWithInts(int num) {
        assertTrue(num > 0);
    }
  2. 90% 成功率 Use @CsvSource for multiple parameters
    @ParameterizedTest
    @CsvSource({"1, foo", "2, bar"})
    void testWithCsv(int id, String name) {
        assertNotNull(name);
    }

无效尝试

常见但无效的做法:

  1. Adding @ParameterizedTest without source 80% 失败

    JUnit doesn't know where to get parameters from.

  2. Using @Test instead of @ParameterizedTest 60% 失败

    Test won't be parameterized and will fail with missing arguments.