Java 当使用JUnit 4 runner运行JUnit 5时,Eclipse会报告参数化测试的无根测试结果

Java 当使用JUnit 4 runner运行JUnit 5时,Eclipse会报告参数化测试的无根测试结果,java,eclipse,junit,junit5,Java,Eclipse,Junit,Junit5,我有面向Java开发人员的EclipseIDE2020-03。 我使用JUnit5创建了一个带有参数化测试的测试类。 代码如下: @ParameterizedTest @CsvFileSource(resources = dataDir + "TestPO/ddt.csv", numLinesToSkip = 1) void invalidLogin(String username, String password, String errorMessage, TestInfo

我有面向Java开发人员的EclipseIDE2020-03。 我使用JUnit5创建了一个带有参数化测试的测试类。 代码如下:

@ParameterizedTest
@CsvFileSource(resources = dataDir + "TestPO/ddt.csv", numLinesToSkip = 1)
void invalidLogin(String username, String password, String errorMessage, TestInfo info)
{
    printDisplayTestName(info);
    
    LoginPage loginPage = LoginPage.open(driver);
    loginPage.submitLogin(username, password);
    assertTrue(loginPage.getConfirmation().contains(errorMessage));
}
当我使用JUnit5 runner运行这个测试时,它会产生正确的结果。 但是,当我使用JUnit 4 runner运行同一测试类作为测试套件的一部分时

@RunWith(JUnitPlatform.class)
  @SelectClasses({
      TestPO.class,
      LoggingTest.class
  })
 
class Smoke
{}
当invalidLogin()测试是TestPO类的一部分时,它可以工作,但结果显示为无根测试。


如何修复它?

@RunWith(JUnitPlatform.class)是一种解决方法,当您必须使用不支持JUnit5平台的(旧)工具时。不要将其与最新的IDE一起使用。因为JUnit4缺少基础知识,所以有些东西无法工作。@johanneslink我必须在Eclipse中使用@RunWith(JUnitPlatform.class)来运行测试套件。您知道其他解决方案吗?@Vladimir不,您不需要在Eclipse中使用
@RunWith(JUnitPlatform.class)
。顺便说一下,您的Eclipse已经过时了。@Vladimir RunWith(JUnitPlatform.class)是一个解决方法。我是JUnit5的原始开发者之一,我知道它支持什么,不支持什么。@Vladimir不,这没有错。但它明确指出:“由于JUnit平台具有JUnit 4所没有的功能,因此运行程序只能支持JUnit平台功能的一个子集”@RunWith(JUnitPlatform.class)是您必须使用(旧)时的一种变通方法不支持JUnit5平台的工具。不要在最新的IDE中使用它。有些东西无法工作,因为JUnit4缺少基础知识。@johanneslink我必须在Eclipse中使用@RunWith(JUnitPlatform.class)来运行测试套件。你知道其他解决方案吗?@Vladimir不,你不需要使用
@RunWith(JUnitPlatform.class)
在Eclipse中。顺便说一下,您的Eclipse已经过时了。@Vladimir RunWith(JUnitPlatform.class)是一种变通方法。我是JUnit 5的原始开发人员之一,我知道它支持什么和不支持什么。@Vladimir不,这没有错。但它明确指出:“由于JUnit平台具有JUnit 4所没有的功能,因此运行者只能支持JUnit平台功能的一个子集。”