2016-09-09 12 views
41

Co to jest poprawna adnotacja, ponieważ @SpringApplicationConfiguration i @WebIntegration jest przestarzała od Spring Boot Framework 1.4? Próbuję bawić się testami jednostkowymi.Co to jest poprawna adnotacja, ponieważ @SpringApplicationConfiguration, @WebIntegration, jest przestarzałe w Spring Boot Framework?

+4

@SpringBootTest (webEnvironment = WebEnvironment.MOCK) – Ulises

+0

spojrzeć na https : //spring.io/blog/2016/04/15/testing-improvements-in-spring-boot-1-4 – Lu55

Odpowiedz

30

Spójrz w Javadocs nieaktualnych klasach:

* @deprecated as of 1.4 in favor of 
* {@link org.springframework.boot.test.context.SpringBootTest} with 
* {@code webEnvironment=RANDOM_PORT} or {@code webEnvironment=DEFINED_PORT}. 
*/ 
... 
@Deprecated 
public @interface WebIntegrationTest { 

* @deprecated as of 1.4 in favor of {@link SpringBootTest} or direct use of 
* {@link SpringBootContextLoader}. 
*/ 
... 
@Deprecated 
public @interface SpringApplicationConfiguration { 

Jest tam również zamiennikiem TestRestTemplate()?

Tak, to jest tutaj:

* @deprecated as of 1.4 in favor of 
* {@link org.springframework.boot.test.web.client.TestRestTemplate} 
*/ 
@Deprecated 
public class TestRestTemplate extends RestTemplate { 
+1

@Lisa Powinna być oznaczona jako poprawna odpowiedź. – Anand

0

Należy użyć tej adnotacji:

@ContextConfiguration(classes = main_class) 
+0

To nie działa, ponieważ podczas testu integracji moja aplikacja nie może pobrać parametrów adresu URL bazy danych z pliku właściwości. –

14

Dobrym miejscem na rozpoczęcie jest teraz prawdopodobnie: Testing improvements in Spring Boot 1.4.

Opisują one podstawową próbkę tak:

@RunWith(SpringRunner.class) 
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT) 
public class MyTest { 
} 

jako zamiennik do, jeden z wielu:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(MyApp.class) 
@WebIntegrationTest 
public class MyTest { 
} 
+1

W jaki sposób wyższa wersja Ciebie wie, że ApplicationConfiguration jest w klasie MyApp.class? kiedy go zaimplementuję, nie załaduje aplikacjiContext – Nali

+0

Dobre pytanie, nie wiem, ale może to być tylko jedna uruchomiona aplikacja na raz. – user1767316

Powiązane problemy