使用 @ParameterizedTest 和 @RunWith(Parameterized.class) 时 JUnit5 (Vintage) 初始化错误

low*_*cks 0 parameterized mockito junit5

在尝试使用 JUnit 5 的参数化功能时,我偶然发现了一个初始化错误。

@ExtendWith(MockitoExtension.class)
@RunWith(Parameterized.class)
public class ServiceTest {

    @InjectMocks
    Service service;

    private static Stream<Arguments> getArguments() {
        return Stream.of(
                Arguments.of("something", "result1", "result2"),
                Arguments.of("another", "result3", "result4")
        );
    }

    @ParameterizedTest
    @MethodSource("getArguments")
    @DisplayName("Test parseEndpoint method")
    void testMethod(String arg1, String result1, String result2) {

        final String[] strings = service.doSomething(arg1);

        assertEquals(result1, strings[0]);
        assertEquals(result2, strings[1]);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后我可以看到我的测试正在由参数化引擎和 JUnit Vintage 单元运行。这里的问题是如何禁用这样的类只由 Parameterized.class 运行?!

Kot*_*tse 7

您在同一个类中混合使用 JUnit 4 和 5。

删除@RunWith(Parameterized.class),你不需要它。删除来自 junit 4 包的所有其他代码(如果有)。

在那之后你的测试就可以了。