2017-07-10 7 views
0

私は安らかなアプリケーションで作業しています。私はTDD方法論を使い始めました。第2段階では、実装されたメソッドの後のテストオプションに切り替えます。しかし、私はテストを実行することはできません。エラーの種類:テストを実行できませんintelliJ - Springプロジェクトエラー:java.lang.NoSuchMethodError

Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader()Ljava/lang/ClassLoader; 

    at org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry.loadTestEngines(ServiceLoaderTestEngineRegistry.java:30) 

    at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:53) 

    at com.intellij.junit5.JUnit5IdeaTestRunner.createListeners(JUnit5IdeaTestRunner.java:39) 

    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:49) 

    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 

    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 

Process finished with exit code 1 

Empty test suite. 

POMファイル:

<?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.przemyslawostrouch</groupId> 
    <artifactId>weatherapp</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>weatherapp</name> 
    <description>Web project will aviation weather and Notam informations</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.4.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <!-- https://mvnrepository.com/artifact/org.assertj/assertj-core --> 
     <dependency> 
      <groupId>org.assertj</groupId> 
      <artifactId>assertj-core</artifactId> 
      <version>1.2.0</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>com.opencsv</groupId> 
      <artifactId>opencsv</artifactId> 
      <version>3.9</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.junit.jupiter</groupId> 
      <artifactId>junit-jupiter-api</artifactId> 
      <version>RELEASE</version> 
     </dependency><!-- https://mvnrepository.com/artifact/org.json/json --> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20170516</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io --> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.8.1</version> 
     </dependency> 


     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      <version>1.16.16</version> 
      <scope>provided</scope> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/com.squareup.retrofit/retrofit --> 
     <dependency> 
      <groupId>com.squareup.retrofit</groupId> 
      <artifactId>retrofit</artifactId> 
      <version>1.9.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

テストクラスの例:私は変更の依存関係を試してみました

package com.przemyslawostrouch.parsers; 

import com.przemyslawostrouch.domain.Airport; 
import com.przemyslawostrouch.domain.City; 
import com.przemyslawostrouch.domain.CityAirportDistance; 
import com.przemyslawostrouch.logic.NearestAirport; 
import org.junit.jupiter.api.Test; 

import java.util.ArrayList; 
import java.util.List; 

import static org.assertj.core.api.Assertions.assertThat; 


/** 
* Created by Przemek on 2017-06-24. 
*/ 
class NearestAirportTest { 

    private NearestAirport nearestAirport; 
    private City katowiceCity; 
    private Airport katowiceAirport; 
    private Airport frankfurtAirport; 
    private Airport pulkovoAirport; 
    private CityAirportDistance cityAirportDistance; 
    private CityAirportDistance cityAirportDistance1; 
    private CityAirportDistance cityAirportDistance2; 
    private String searchedCityUpperCase; 

    public void setup() { 


     searchedCityUpperCase = "Katowice"; 

     nearestAirport = new NearestAirport(); 

     katowiceCity = City.builder() 
       .name("Katowice") 
       .latitude(50.26489189999999) 
       .longitude(19.0237815) 
       .build(); 

     katowiceAirport = Airport.builder() 
       .name("Muchowiec Airport") 
       .longitude(19.03420066833496) 
       .latitude(50.23809814453125) 
       .build(); 

     frankfurtAirport = Airport.builder() 
       .name("Frankfurt am Main International Airport") 
       .longitude(8.5705556) 
       .latitude(50.0333333) 
       .build(); 

     pulkovoAirport = Airport.builder() 
       .name("Pulkovo Airport") 
       .longitude(30.262500762939453) 
       .latitude(59.80030059814453) 
       .build(); 

     cityAirportDistance = CityAirportDistance.builder() 
       .airportName(katowiceAirport.getName()) 
       .searchedCityName(searchedCityUpperCase) 
       .distanceBetweenSearchedCityAndAirport(1.6565764398773335) 
       .build(); 

     cityAirportDistance1 = CityAirportDistance.builder() 
       .airportName(frankfurtAirport.getName()) 
       .searchedCityName(searchedCityUpperCase) 
       .distanceBetweenSearchedCityAndAirport(401.81041784523916) 
       .build(); 

     cityAirportDistance2 = CityAirportDistance.builder() 
       .airportName(pulkovoAirport.getName()) 
       .searchedCityName(searchedCityUpperCase) 
       .distanceBetweenSearchedCityAndAirport(688.4011751978946) 
       .build(); 
    } 

    @Test 
    void isNearestAirportNotNull() { 
     setup(); 
     assertThat(nearestAirport).isNotNull(); 
    } 

    @Test 
    void whenTypedCityReturnCityWithFirstLetterUpperCase() { 
     setup(); 
     String searchedCity = "katowice"; 
     assertThat(nearestAirport.searchedCityToUpperCase(searchedCity)).isEqualTo("Katowice"); 
    } 


    @Test 
    void forGivenCityAndAerodromeCoordinatesReturnDistance() { 
     setup(); 
     //City Gdansk 
     City gdanskCity = City.builder() 
       .name("Gdansk") 
       .latitude(54.35202520000001) 
       .longitude(18.6466384) 
       .build(); 
     Airport gdanskAirport = Airport.builder() 
       .name("Gdańsk Lech Wałęsa Airport") 
       .latitude(54.377601623535156) 
       .longitude(18.46619987487793) 
       .build(); 

     assertThat(nearestAirport.calculateDistance(gdanskCity, gdanskAirport)).isEqualTo(6.491638306515884); 
    } 

    @Test 
    void forGivenCityNameCalculateDistanceBetweenAllAirports() { 
     setup(); 
     List<Airport> listOfAirportsForTest = new ArrayList<>(); 

     listOfAirportsForTest.add(katowiceAirport); 
     listOfAirportsForTest.add(frankfurtAirport); 
     listOfAirportsForTest.add(pulkovoAirport); 


     assertThat(nearestAirport.calculateDistanceBetweenAllAirportsAndSelectedCity(listOfAirportsForTest, katowiceCity)) 
       .contains(cityAirportDistance, cityAirportDistance1, cityAirportDistance2); 

    } 

    @Test 
    void sortListDistancesAndReturnNearestAirport() { 
     setup(); 

     List<CityAirportDistance> cityAirportDistancesListTest = new ArrayList<>(); 


     cityAirportDistancesListTest.add(cityAirportDistance); 
     cityAirportDistancesListTest.add(cityAirportDistance1); 
     cityAirportDistancesListTest.add(cityAirportDistance2); 

     assertThat(nearestAirport.createListOfNearestAirports(katowiceCity)).contains(cityAirportDistancesListTest.get(0) 
       , cityAirportDistancesListTest.get(1) 
       , cityAirportDistancesListTest.get(2)); 

    } 

、これらのテストを削除して、別のものを書き、それが動作しません。 このエラーは発生していません。このプロジェクトではテストを実行できません。私はスタックオーバーフローと同様のページでこの問題の解決策を見つけることができません。追加情報が必要な場合は、尋ねてください。助けてくれてありがとう

答えて

3

答えはpom.xmlファイルにあります。あなたがコンソール出力を見てみた場合、あなたはのIntelliJ IDEAはJUnit5ランナーを使用しようとしていることがわかります:

at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:43) 

あなたがJUnit:4.12を使用することを期待あなたpom.xmlファイルによります。次のステップは、どのような依存関係がこの競合を引き起こすかを見つけることです。 pom.xmlに記載されているすべての依存関係を比較すると、あなたは、このモジュールはJUnit5のために設計されてjunit-jupiter-api

<dependency> 
     <groupId>org.junit.jupiter</groupId> 
     <artifactId>junit-jupiter-api</artifactId> 
     <version>RELEASE</version> 
    </dependency> 

を見つけることができます -

https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-apiはまた、あなたのテストクラスに@Test注釈のインポートを修正 - あなたは木星APIから1を読み込みます。

EDIT:最後の1つです。 Mavenの依存関係プラグインを使用して同様の問題に直面すると(例えば、クラスローダーが存在しないメソッドのリファレンスについて不平を言う)、常に良い出発点(https://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html)です。どの依存関係が競合するかを見つけるのに役立ちます。

関連する問題