首页 > 解决方案 > Spring Boot @RunWith(SpringRunner.class) 导致 InitializationError

问题描述

我有这个问题几天了,在这个论坛上检查了类似的问题,并以各种方式谷歌搜索,但找不到答案。

这是一个 Spring Boot 入门项目:我有一个类 Graphs,它在“src/main/java”下的包中由 @Component 注释:

@Component
public class Graphs {
}

然后,我在“src/test/java”下创建了测试类。其中之一(用于测试图表):

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.example.demo.Graphs;

@RunWith(SpringRunner.class)
@SpringBootTest
public class GraphsTest {   
  @Test
  public void testRun () {
     Graphs graph = new Graphs(); 
  }
}

然后我在 Eclipse 中运行 testRun(右键单击“testRun”--> Run As --> Junit Test)。我得到的结果是:

initializationError [Runner: Junit 4] (0.0001s)

Eclipse 中的故障跟踪显示如下:

java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testRun], {ExactMatcher:fDisplayName=testRun(com.example.demoTest.GraphsTest)], {LeadingIdentifierMatcher:fClassName=com.example.demoTest.GraphsTest,fLeadingIdentifier=testRun]] from org.junit.internal.requests.ClassRequest@1f7030a6
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:74)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:49)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:525)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

我做了一些调整,没有任何运气:

  1. 我购买了最新的 Eclipse Oxygen,也在 Eclipse 2018-12 版中尝试过,结果相同。
  2. 如果我删除 @RunWith 注释并运行 testRun,它会产生预期的结果。
  3. 我添加了一个 Public static void main 并将其作为“Java 应用程序”运行,它产生了预期的结果。我猜想将它作为 Java 应用程序运行绕过了@RunWith(SpringRunner.class)。

我哪里做错了?

标签: springeclipsespring-bootspring-boot-test

解决方案


推荐阅读