2016-10-24 7 views
3

Ich kann im Spring Boot 1.4 keinen einfachen Test ausführen. Ich folgte dem Tutorial von der offiziellen Seite testing-the-spring-mvc-slice, aber ich habe es nicht zur Arbeit bekommen.SpringBootConfiguration kann im Spring Boot Test nicht gefunden werden 1.4

jedes Mal, wenn ich die folgende Fehlermeldung erhalten:

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test 

irgendwelche Ideen, Tipps?

Vielen Dank im Voraus

Edit:

dies ist der Controller

@Controller 
public class UserManagementController { 

@GetMapping(value = "/gs/users/getUsers") 
    public @ResponseBody String getAllUsers() { 
     return "test"; 
    } 
} 

dies der Test es genau

@RunWith(SpringRunner.class) 
@WebMvcTest(UserManagementController.class) 
public class UserManagementControllerTest { 

    @Autowired 
    private MockMvc mvc; 

    @Test 
    public void showUserView() throws Exception { 
     this.mvc.perform(get("/gs/users/getUsers")) 
      .andExpect(status().isOk()) 
      .andDo(print()); 
    } 
} 

Aus meiner Sicht ist die gleiche mag diesen Beitrag von der Seite.

die @WebMvcTest tun:

  • Auto-Konfiguration Spring MVC, Jackson, Gson, Nachrichtenwandler usw.
  • Last relevanten Komponenten (@Controller, @RestController, @JsonComponent etc)
  • konfigurieren MockMVC

jetzt, warum ich eine "Super" -Klasse

konfigurieren muss
+0

wie die msg sagt, – Jaiwo99

+0

eine der anderen Annotationen verwenden Ja, das ist richtig. Aber in den offiziellen Dokumenten sagen sie, dass du das benutzen kannst und es ist genug. –

+0

Wenn Sie Sie getestet Klasse und testen selbst könnte es klarer –

Antwort

11

The search algorithm works up from the package that contains the test until it finds a @SpringBootApplication or @SpringBootConfiguration annotated class. As long as you’ve structure your code in a sensible way your main configuration is usually found.

Sie haben also Ihren Test mit @ * Test kommentiert. Es wird ausgeführt, auf Konfiguration in Unterklassen überprüft, hat keine gefunden, eine Ausnahme ausgelöst.

Sie haben eine config in einem Paket oder subpackage der Testklasse haben oder direkt Config-Klasse @ContextConfiguration oder @SpringBootTest oder haben Klasse mit @SpringBootApplication kommentierte passieren.

Nach @SpringBootApplication. Ich habe Controller in der Weise getestet, die Sie mit @WebMvcTest erwähnt haben: es funktioniert, wenn Anwendung Klasse als @SpringBootApplication annotiert ist und mit der Ausnahme fehlschlägt, die Sie erwähnt haben, wenn nicht. Es gibt es den Artikel erwähnen, die Sie erwähnt:

In this example, we’ve omitted classes which means that the test will first attempt to load @Configuration from any inner-classes, and if that fails, it will search for your primary @SpringBootApplication class.

Github discussion über den gleichen Punkt.

Spring Boot Documentation

+0

danke für die Erklärung. –

+0

genial, danke –

+0

Ich habe das gleiche Problem. Ich möchte vermeiden, auf meine Hauptproduktionskonfiguration zu zeigen, da es alle Datenbank-Sachen lädt und einfache Testläufe zu lange dauert.Ich dachte @WebMvcTest lädt die Lightweight-Konfiguration (keine db, minimale Vernetzung), also werde ich die Service-Schicht verspotten und die Controller-Logik schnell testen. Aber es sieht so aus, als ob ich Controller testen muss. Ich muss immer den vollen Stack testen, DB-Objekte erstellen usw. – tequilacat

Verwandte Themen