2017-05-30 2 views
0

Ich habe eine kleine Anwendung, die im Live-Modus eine Datenbankverbindung herstellt und einige Daten speichert und speichert.Spring Boot DataSource-Konfiguration ausschließen

Ich bin derzeit in der Mitte des Versuches, einige Tests zu schreiben, und ich möchte den Datenbank-Teil der Anwendung vollständig abschneiden, und es nur in den Tests verspotten.

Die Datenquelle wird mit einer Konfigurationsklasse eingerichtet.

@Component 
@Configuration 
public class DataSourceConfiguration { 
    @Bean 
    public DataSource myDataSource() { ... } 
} 

und ein Test Bootstrap, die

ähnlich sieht derzeit
@RunWith(SpringRunner.class) 
@EnableAutoConfiguration(exclude = { 
    DataSourceAutoConfiguration.class, 
    DataSourceTransactionManagerAutoConfiguration.class, 
    HibernateJpaAutoConfiguration.class 
}) 
public class MyTest { 
} 

Wenn der Test läuft, kann ich, dass Frühling sehen versucht, Hibernate, und eine Verbindung mit dem db zu instanziiert, gehe ich davon aus, weil der Meine Konfigurationsklasse. Wie kann ich Spring davon abhalten?

Antwort

0

keine Notwendigkeit zu verwenden: wie weiter unten unter Verwendung @WebMvcTest @EnableAutoConfiguration

wir die Web-Schicht nur noch die Tests verengen können,

@RunWith(SpringRunner.class) 
@WebMvcTest 
public class WebLayerTest { 

    @Autowired 
    private MockMvc mockMvc; 

    @Test 
    public void shouldReturnDefaultMessage() throws Exception { 
    this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk()) 
      .andExpect(content().string(containsString("Hello World"))); 
    } 
} 

Siehe, wie Feder Anwendung testen mit nur Web oder Verwenden des vollständigen Anwendungskontextes Laden: https://spring.io/guides/gs/testing-web/

siehe Beispiel: http://www.lucassaldanha.com/unit-and-integration-tests-in-spring-boot/

+0

Werfen Sie einen Blick auf Federprofile –