[java] SpringRunner 및 SpringBootTest

단위 테스트에서 @Runwith(SpringRunner.class)& 의 차이점은 무엇 @SpringBootTest입니까?

각각의 사용 사례를 설명해 주시겠습니까?



답변

@RunWith (SpringRunner.class가) : 당신은 봄 부팅이 같은 기능을 사용하려면이 주석을 필요로 @Autowire, @MockBeanJUnit을 테스트하는 동안 등을

Spring Boot 테스트 기능과 JUnit을 연결하는 데 사용됩니다. JUnit 테스트에서 Spring Boot 테스트 기능을 사용할 때마다이 주석이 필요합니다.

@SpringBootTest : 이 주석은 엔드 투 엔드 통합 테스트를위한 완전한 애플리케이션 컨텍스트를로드하는 데 사용됩니다.

@SpringBootTest 주석은 전체 컨테이너를 부트 스트랩해야 할 때 사용할 수 있습니다. 주석은 테스트에 사용될 ApplicationContext를 생성하여 작동합니다.

Baeldung 두 시나리오에 대한 명확한 예가있는 기사입니다.


답변

에서 spring.io :

@RunWith(SpringRunner.class)JUnit에게 Spring의 테스트 지원을 사용하여 실행하도록 지시합니다. SpringRunner의 새로운 이름입니다 SpringJUnit4ClassRunner. 눈에 약간 더 쉽습니다.

@SpringBootTest“Spring Boot가 지원되는 부트 스트랩”이라고 말하고 있습니다 (예 : application.properties모든 Spring Boot의 장점을 로드 하고 제공하십시오)

따라서 통합 테스트를 위해 Spring Boot가로드하는 모든 것이 필요하지 않은 경우 @SpringBootTest


답변

@RunWith는 테스트 러너를 사용하기위한 JUnit 4의 오래된 주석입니다. JUnit 5 (Jupiter)를 사용하는 경우 @ExtendWith를 사용하여 JUnit 확장을 사용해야합니다.

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing을 참조
하십시오

“JUnit 4를 사용하는 경우 테스트에 @RunWith (SpringRunner.class)도 추가해야합니다. 그렇지 않으면 주석이 무시됩니다. JUnit 5를 사용하는 경우 동등한 @ExtendWith ( @SpringBootTest 및 다른 @… Test 주석과 같은 SpringExtension.class)에는 이미 주석이 달려 있습니다.


답변