SpringRunner 및 SpringBootTest


11

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

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


1
다양한 문서를 읽었습니까? 아직도 불분명 한 것은 무엇입니까?
jonrsharpe

명백한 차이는 봄 부팅 테스트 VS 봄 테스트이지만, 매우 광범위한 질문
user7294900

SpringRunner와 함께 @SpringBootTest를 언제 사용해야하는지 이해합니다.
zouari

답변:


10

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

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

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

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

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


1

에서 spring.io :

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

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

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


0

@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)에는 이미 주석이 달려 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.