Spring Boot @RunWith(SpringRunner.class)导致InitializationError

时间:2019-03-10 18:29:06

标签: spring eclipse spring-boot spring-boot-test

我遇到这个问题已经有几天了,在这个论坛上检查了类似的问题,并以各种方式在Google上进行了搜索,但是找不到答案。

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

@Component
public class Graphs {
}

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

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 Application”运行,它产生了预期的结果。我猜它是作为绕过@RunWith(SpringRunner.class)的Java应用程序运行的。

我在哪里做错了?

0 个答案:

没有答案