java - JUnit5如何识别并执行可运行方法?

标签 java methods junit5

我运行 JUnit5 测试,但收到 initializationError(No runnablemethod)。但是,我至少在一种方法 (failingTest) 上有 @Test 注释。为什么failingTest没有被识别为可运行方法(并且执行了相应的测试用例)?

文件StandardTests.java ...

// See https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods
import static org.junit.jupiter.api.Assertions.fail ;
import org.junit.jupiter.api.Test ;
public class StandardTests
  {
  @Test
  public void failingTest()
    { fail ( "a failing test" ) ; }
  } // end StandardTests

并在文件 TestRunner.java ...

import org.junit.runner.JUnitCore ;
import org.junit.runner.Result ;
import org.junit.runner.notification.Failure ;
public class TestRunner
  {
  public static void main ( String [] args )
    {
    Result result = JUnitCore.runClasses ( StandardTests.class ) ;
    for ( Failure failure : result.getFailures() )
      System.out.println ( "failure: " + failure.toString() ) ;
    System.out.println ( "successful: " + result.wasSuccessful() ) ;
    } // end main
  } // end TestRunner

我希望 StandardTests 类的方法 failingTest 将被识别为 JUnit5 测试用例并执行(也就是说,failingTest 将是标识为可运行方法并作为 JUnit5 测试用例执行)。但是,我运行 TestRunner 时的输出是:

C:\JUnit\Minimal>C:\Progra~1\Java\JDK-12~1.1\bin\java -cp ".;junit-platform-console-standalone-1.4.2.jar" TestRunner
failure: initializationError(StandardTests): No runnable methods
successful: false

如何将此 JUnit5 测试用例 (failingTest) 识别为测试用例并执行?

最佳答案

您似乎拥有 JUnit4/5 混合体:注释来自 JUnit5 (org.junit.jupiter.api.Test),但运行程序是 JUnit4 (org.junit.runner .JUnitCore)。最后一个应该是jupiter

另请参阅此答案以了解更多详细信息:https://stackoverflow.com/a/52373592/907576

关于java - JUnit5如何识别并执行可运行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56798683/

相关文章:

java - C++:如何在 Windows 32 和 64 位中获取最新的 Java 路径?

java - sql更新语句无法正确执行

ruby - 如何使用 if 方法添加到数组

java 。输入奇数和偶数时程序崩溃

junit5 - 我们可以在 Junit 5 中将 @RepeatedTest 与 @ParameterizedTest 一起使用吗

unit-testing - 需要 CDI 容器的单元测试会导致 java.lang.IllegalStateException : Unable to access CDI

java - `Eclipse/Project/Clean...` 和 `Eclipse/Project/Refresh (F5)` 之间有什么区别?

java - 已用、已提交和最大堆内存的差异

c# - 在 C# 中,方法声明后的 <T> 是什么?

java - Maven jUnit5 org.junit.platform.runner、org.junit.platform.suite.api不存在