스프링 부트 테스트 - 여러 테스트가 단일 컨텍스트를 공유할 수 있습니까?
스프링 부트 테스트 클래스(1.4.0 포함)를 여러 개 만들었습니다.
FirstActionTest.java:
@RunWith(SpringRunner.class)
@WebMvcTest(FirstAction.class)
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc;
// ...
}
SecondActionTest.java:
@RunWith(SpringRunner.class)
@WebMvcTest(SecondAction.class)
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc;
// ...
}
다음을 통해 테스트를 실행하는 경우:
MVN 테스트
각 시험 수업마다 봄 시험 상황을 만들어 준 것 같은데, 그럴 필요는 없을 것 같습니다.
질문은 다음과 같습니다.
- 여러 테스트 클래스 간에 단일 스프링 테스트 컨텍스트를 공유할 수 있으며, 만약 그렇다면 어떻게 해야 합니까?
두 개의 다른 클래스를 사용하여@WebMvcTest
(즉,@WebMvcTest(FirstAction.class)
그리고.@WebMvcTest(SecondAction.class)
) 다른 응용프로그램 컨텍스트를 원한다는 것을 구체적으로 나타냅니다.이 경우 각 컨텍스트에 다른 콩 집합이 포함되어 있으므로 단일 컨텍스트를 공유할 수 없습니다.콘트롤러 콩이 상당히 잘 작동한다면 콘텍스트를 만드는 것이 비교적 빠르고 실제로 문제가 없어야 합니다.
모든 웹 테스트에서 캐시하고 공유할 수 있는 컨텍스트를 사용하려면 컨텍스트에 정확히 동일한 빈 정의가 포함되어 있는지 확인해야 합니다.떠오르는 두 가지 옵션:
사용@WebMvcTest
컨트롤러를 지정하지 않았습니다.
첫 번째 액션테스트:
@RunWith(SpringRunner.class)
@WebMvcTest
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc;
// ...
}
두 번째 액션테스트:
@RunWith(SpringRunner.class)
@WebMvcTest
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc;
// ...
}
사용 안 함@WebMvcTest
따라서 웹 문제뿐만 아니라 모든 문제를 포함하는 애플리케이션 컨텍스트를 얻을 수 있습니다.
첫 번째 액션테스트:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc; // use MockMvcBuilders.webAppContextSetup to create mvc
// ...
}
두 번째 액션테스트:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc; // use MockMvcBuilders.webAppContextSetup to create mvc
// ...
}
캐슁된 컨텍스트를 사용하면 여러 테스트를 더 빠르게 실행할 수 있지만, 개발 시점에 단일 테스트를 반복적으로 실행할 경우 많은 콩을 생성하고 즉시 폐기해야 하는 비용이 발생합니다.
언급URL : https://stackoverflow.com/questions/40236904/spring-boot-testing-could-multiple-test-share-a-single-context
'source' 카테고리의 다른 글
Spring Boot JDBC 템플릿 (0) | 2023.06.26 |
---|---|
오라클에서 커밋되지 않은 읽기 옵션을 허용합니까? (0) | 2023.06.26 |
여러 사용자 정의 사용자 분류법을 단일 URL에 결합 (0) | 2023.06.26 |
repo를 새 .gitignore 파일과 다시 동기화합니다. (0) | 2023.06.26 |
"의존성 분석"에 머무르는 코코파드 (0) | 2023.06.26 |