Spring Boot @RunWith(SpringRunner.class) приводит к InitializationError

У меня была эта проблема в течение нескольких дней, я проверял подобные вопросы на этом форуме и гуглил по-разному, но не мог найти ответа.

Это стартовый проект Spring Boot: у меня есть класс Graphs, который аннотируется @Component в пакете в разделе «src/main/java»:

@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(); 
  }
}

Затем я запустил testRun в Eclipse (щелкните правой кнопкой мыши «testRun» -> «Запуск от имени» -> «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).

Где я ошибся?


person user1693207    schedule 10.03.2019    source источник
comment
Не могли бы вы показать свой импорт? См. Eclipse выдает исключение java.lang.NullPointerException при запуске Spring JUnit. См. примеры и импорт из Spring Boot Testing. учебник   -  person Michał Ziober    schedule 11.03.2019
comment
Попробуйте запустить с пустым testRun() {} и посмотрите, что произойдет   -  person Ponleu    schedule 11.03.2019
comment
Тестовый запуск testRun() {}, так как Junit Test дал тот же результат (initializationError).   -  person user1693207    schedule 11.03.2019
comment
Я отредактировал исходный пост, удалив... как в исходном, так и в тестовом классе, чтобы упростить проблему. testRun выдает ту же ошибку, о которой сообщалось.   -  person user1693207    schedule 11.03.2019