java
config_error
ai_generated
true
参数解析异常:方法 testFactory 中参数 [java.lang.String arg0] 没有注册的 ParameterResolver
org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.lang.String arg0] in method testFactory
ID: java/junit-test-factory-no-parameters
80%修复率
83%置信度
0证据数
2025-06-15首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 8+ | active | — | — | — |
根因分析
@TestFactory 方法有参数但缺少来源,或动态测试不支持参数。
English
@TestFactory method has parameters but no source, or parameters are not supported for dynamic tests.
解决方案
-
95% 成功率 Remove parameters from @TestFactory method
@TestFactory Stream<DynamicTest> testFactory() { return Stream.of("a", "b").map(input -> DynamicTest.dynamicTest("Test " + input, () -> { assertNotNull(input); }) ); } -
70% 成功率 Use @TestTemplate instead
@TestTemplate @ExtendWith(MyExtension.class) void testTemplate(String input) { // implementation }
无效尝试
常见但无效的做法:
-
Adding @ParameterizedTest instead of @TestFactory
50% 失败
Changes test type; may not produce dynamic tests.
-
Removing parameters and using hardcoded values
40% 失败
Reduces test flexibility.