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
80%修复率
84%置信度
0证据数
2025-03-05首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 8+ | active | — | — | — |
根因分析
参数化测试方法或构造函数有参数,但缺少 @ValueSource 或其他源注解。
English
Parameterized test method or constructor has parameters but no @ValueSource or other source annotation.
解决方案
-
95% 成功率 Add @ValueSource with values
@ParameterizedTest @ValueSource(ints = {1, 2, 3}) void testWithInts(int num) { assertTrue(num > 0); } -
90% 成功率 Use @CsvSource for multiple parameters
@ParameterizedTest @CsvSource({"1, foo", "2, bar"}) void testWithCsv(int id, String name) { assertNotNull(name); }
无效尝试
常见但无效的做法:
-
Adding @ParameterizedTest without source
80% 失败
JUnit doesn't know where to get parameters from.
-
Using @Test instead of @ParameterizedTest
60% 失败
Test won't be parameterized and will fail with missing arguments.