2017-01-08 3 views
1
nicht gefunden

Ich folgte der Anleitung hier, https://spring.io/guides/gs/spring-boot/ - geklont das Projekt, mit Gradle gebaut und versucht zu laufen ... Anwendung lief gut. Dann änderte ich einige Dateistruktur wie pro meine Anforderung und versucht, die Einheit Testfall laufen dort gegeben, aber diesen Fehler -@SpringBootApplication von JUnit Testdatei

Es kann keine @SpringBootConfiguration finden, die Sie benötigen @ContextConfiguration oder @SpringBootTest (Klassen verwenden = ...) mit dem Test

ich restrukturieren nur die Codes in dort, und dies ist meine aktuelle Projektstruktur -

/projectroot 
    - /src/main/java 
      -Application.java 
      -/controller 
       -MyController.java 
      -/util 
       -MyUtil.java 
      -/model 
       -MyModel.java 

Jetzt versucht Testfall von

laufen

/src/test/java/controller/MyControllerTest.java

Ich habe durch diese Stack Overflow link gegangen und verstanden, dass, wenn ich unter meinem Test-Ordner speichern/src/main/java/es kann funktionieren. Aber wenn ich das tue, kompiliert die Testdatei nicht und es scheint auch nicht der richtige Weg zu sein, Anwendungscode zusammen mit Testcode zu setzen. Ich weiß, dass mir etwas sehr Grundlegendes fehlt.

Antwort

1

Die Art, wie Sie Ihren Test (mit dem gesamten Spring-Boot-Kontext) einrichten, glaube ich, MyControllerTest.java muss höchstens auf dem gleichen Stand wie Application.java sein. Außerdem merke ich, Application.java verwendet Standardpaket, sollten Sie es in ein Paket verschieben, so dass alle Ihre Bohnen sind unten Ihre Spring-Boot-Hauptklasse:

/projectroot 
    - /src/main/java/com/example/project/ 
      -Application.java 
      -/controller 
       -MyController.java 
      -/util 
       -MyUtil.java 
      -/model 
       -MyModel.java 
    - /src/test/java/com/example/project/ 
      -MyControllerTest.java 

Spring's documentation

Wie Frühling Der Boot-Kontext wird von einem Test:

gelöst Der Suchalgorithmus funktioniert von dem Paket, das co Hält den Test , bis es eine annotierte Klasse @SpringBootApplication oder @SpringBootConfiguration findet. Solange Sie Ihren Code in einer sinnvollen Weise strukturieren, wird Ihre Hauptkonfiguration normalerweise gefunden.

über das Standard-Paket mit Frühlings-Stiefel mit:

Wenn eine Klasse keine Paketdeklaration enthält es sein in dem „Standardpaket“ in Betracht gezogen wird. Die Verwendung des "Standardpakets" wird im Allgemeinen nicht empfohlen und sollte vermieden werden. Es kann bestimmte Probleme für Spring Boot-Anwendungen verursachen, die @ComponentScan, @EntityScan oder @SpringBootApplication-Annotationen verwenden, da jede Klasse aus jedem Jar gelesen wird.

Wir empfehlen, dass Sie die von Java empfohlenen Paketnamenskonventionen befolgen und einen umgekehrten Domänennamen verwenden (z. B. com.example.project).

+0

Danke, das hat mein Problem behoben.Du bist ein Lebensretter :). – boolean

Verwandte Themen