TestExecutionListener

목표 TestExecutionListner가 무엇인지 이해한다. TestExecutionListner의 사용법을 이해한다. TestExecutionListner Junit의 @BeforeEach, @AfterEach, @BeforeAll, @AfterAll 같이 테스트 라이프사이클에 추가적으로 동작해야 되는 내용이 있을 때 사용할 수 있다. Spring test에서 제공하는 인터페이스로 이를 상속해서 구현할 수 있다. 인터페이스 public interface TestExecutionListener { default void beforeTestClass(TestContext testContext) throws Exception {}; default void prepareTestInstance(TestContext testContext) throws Exception {}; default void beforeTestMethod(TestContext testContext) throws Exception {}; default void afterTestMethod(TestContext testContext) throws Exception {}; default void afterTestClass(TestContext testContext) throws Exception {}; } beforeTestClass: 클래스 내의 모든 테스트를 실행하기 전에 실행한다....

2024-09-15 · 2 min · 244 words

MockHttpServletRequest

문제 상황 Spring MVC의 컨트롤러에서 요청 보낸 사람의 IP를 확인하기 위해서 HttpServletRequest를 파라미터로 받고 있다. @PutMapping fun put(request: HttpServletRequest) { // ... request.remoteAddr // ... } 단위 테스트를 작성할 때, HttpServletRequest를 인자로 넘겨야되는데, 이는 인터페이스라서 직접 구현해야되는 상황이 발생했다. 해결 방법 Spring Test에서는 MockHttpServletRequest를 제공해주고 있다. 이는 HttpServletRequest의 구현체다. @Test fun test() { controller.put(MockHttpServletRequest()) } 참고 자료 How to Mock HttpServletRequest | Baeldung java - How to extract IP Address in Spring MVC Controller get call?...

2024-09-15 · 1 min · 79 words

ContextConfiguration

목표 @ContextConfiguration의 용도를 이해한다. @ContextConfiguration의 용도 테스트에서 context initializer를 사용해서 ApplicationContext를 구성할 때 사용한다. context를 로드하기 위해 필요한 컴포넌트는 locations로 xml 설정 파일을 지정하거나, classes로 @Configuration 클래스를 지정할 수 있다. @ContextConfiguration("/test-config.xml") class XmlApplicationContextTests { // class body... } @ContextConfiguration(classes = [TestConfig::class]) class ConfigClassApplicationContextTests { // class body... } ApplicationContextInitializer의 구현체를 사용해 구성하고 싶다면, initializers 프로퍼티로 등록할 수 있다. ApplicationContextInitializer: Spring이 ApplicationContext를 초기화 전에 실행하는 콜백 인터페이스 @ContextConfiguration(initializers = [CustomContextInitializer::class]) class ContextInitializerTests { // class body....

2024-09-15 · 1 min · 108 words