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

其他格式: JSON · Markdown 中文 · English
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.

generic

解决方案

  1. 95% 成功率 Remove parameters from @TestFactory method
    @TestFactory
    Stream<DynamicTest> testFactory() {
        return Stream.of("a", "b").map(input ->
            DynamicTest.dynamicTest("Test " + input, () -> {
                assertNotNull(input);
            })
        );
    }
  2. 70% 成功率 Use @TestTemplate instead
    @TestTemplate
    @ExtendWith(MyExtension.class)
    void testTemplate(String input) {
        // implementation
    }

无效尝试

常见但无效的做法:

  1. Adding @ParameterizedTest instead of @TestFactory 50% 失败

    Changes test type; may not produce dynamic tests.

  2. Removing parameters and using hardcoded values 40% 失败

    Reduces test flexibility.