Исключение в потоке "main" java .lang.NoSuchMethodError: org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader () Ljava / lang / ClassLoader; - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь запустить тест с Wiremock на Intellij, но получаю ошибку. Может ли кто-нибудь помочь мне с этой проблемой?

    public class Tests {

    private WireMockServer wireMockServer;

    @Before
    public void setup() {
        wireMockServer = new WireMockServer(8080);
        wireMockServer.start();
        setupStub();
    }

    @After
    public void teardown() {
        wireMockServer.stop();
    }

    public void setupStub() {
        wireMockServer.stubFor(get(urlEqualTo(PEOPLE_PATH))
                .willReturn(aResponse().withHeader("Content-Type", "text/plain")
                        .withStatus(200)
                        .withBodyFile("/Users/denis/Documents/people/autotests/src/test/resources/_files/json/people.json")));
    }

    @Test
    public void testStatusCodePositive() {
        given().
                when().
                get(BASE_URL + PEOPLE_PATH).
                then().
                assertThat().statusCode(200);
    }
}

вот ошибка, которую я получаю: Исключение в теме "main" java .lang.NoSuchMethodError: org.junit.platform.commons.util. ReflectionUtils.getDefaultClassLoader () Ljava / языки / ClassLoader; в org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry.loadTestEngines (ServiceLoaderTestEngineRegistry. java: 31) в org.junit.platform.launcher.core.LauncherFactory.create (42-й объект). .junit5.JUnit5IdeaTestRunner.startRunnerWithArgs (JUnit5IdeaTestRunner. java: 43)

вот мой помощник. xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.people.apitest</groupId>
   <artifactId>people-apitest</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>

      <dependency>
         <groupId>com.github.tomakehurst</groupId>
         <artifactId>wiremock</artifactId>
         <version>2.24.1</version>
      </dependency>

      <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-engine</artifactId>
         <version>5.5.2</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>io.rest-assured</groupId>
         <artifactId>rest-assured</artifactId>
         <version>4.1.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>com.jayway.restassured</groupId>
         <artifactId>json-schema-validator</artifactId>
         <version>2.8.0</version>
      </dependency>
   </dependencies>
</project>

1 Ответ

0 голосов
/ 07 марта 2020

Кажется, у вас есть зависимость cla sh между wiremock и junit5. Когда я смотрю на зависимости wiremock от mvncentral, он заявляет, что использует xmlunit внизу (https://mvnrepository.com/artifact/com.github.tomakehurst/wiremock/2.26.3).

Следуя этой зависимости, вы можете видеть, что xmlunit использует Junit4 внизу (https://mvnrepository.com/artifact/org.xmlunit/xmlunit-core/2.6.2).

Я вполне могу найти, в какой версии доступен метод 'getDefaultClassloader' из чтения опубликованных API JUnit c. Я предлагаю вам попытаться удалить зависимость от junit5 и использовать junit4 для своего тестирования, чтобы посмотреть, устраняет ли это вашу проблему с загрузкой классов.

Если вы используете менеджер зависимостей (mvn, gradle), вы можете перечислить свои эффективные зависимости с помощью командной строки или вашей IDE. Если вы видите конфликтующие версии junit, изучите этот путь.

edit: также добро пожаловать в печально известный «ад зависимостей»

...