test-manager는 Spring-boot 환경에서 테스트환경을 좀 더 간편하게 설정하고 자동화를 할 수 있는 라이브러리 입니다
- embedded mongodb, redis 구성 환경 제공
- Spring-security default mock user 설정
- Spring-rest-docs 테스트 진행시 문서 자동화
To get started with test-manager, follow these steps:
- Add the jitpack.io repository to your project's build.gradle file:
repositories {
...
maven { url 'https://jitpack.io' }
}
- Add the jwt-manager dependency to your app-level build.gradle file:
dependencies {
testImplementation 'com.github.SWM-KAWAI-MANS:test-manager:1.1.0'
}
WebMvtTest 시 Rest-api 문서화를 자동으로 만들어주는 test에 사용합니다.
MockMvc test 시 request body를 구성합니다.
action을 기반으로 문서를 자동으로 생성해줍니다.
@DisplayName("AuthController는")
class AuthControllerTest extends RestControllerNoneAuthTest {
@MockBean AuthService authService;
@Nested
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
class 정상적인_idToken이_주어졌을_때 {
IdTokenRequest request = new IdTokenRequest("idSample");
JwtToken expected =
new JwtToken(
"3Y2NiZmIwMDg5NzQ1ZDA1ZiIs.eyJpZCI6IjY0ODIiZmIwMDg5NzQ1ZD4NTc3Y2NiZmIwMDg5NzQ1ZDA1ZiIsImV4cCI6MTY4NzMwNzY1NH0.4Jka7hW3NWESLOOmNj-_XK-Yf9TKoxW42Vq_aMO6jB_uIp6-mpdamJ43F7ADu57RTkbCnMJ8b06TA5kLEIlJqQ",
"eyJhbGciOiJIUzUxMiJ9.eyJpZCI6IjY0ODI4NTc3Y2NiZmIwMDg5NzQ1ZDA1ZiIsImV4cCI6MTY4NzMwNzY1NH0.4Jka7hW3NWESLOOmNj-_XK-Yf9TKoxW42Vq_aMO6jB_uIp6-mpdamJ43F7ADu57RTkbCnMJ8b06TA5kLEIlJqQ");
@Test
@DisplayName("토큰 발급을 수행한다.")
void successGetToken() throws Exception {
given(authService.authorize(anyString())).willReturn(expected);
ResultActions actions =
mockMvc.perform(
post("/auth")
.contentType(MediaType.APPLICATION_JSON)
.characterEncoding(StandardCharsets.UTF_8)
.content(toRequestBody(request)));
actions.andExpect(status().isCreated());
setPrintDocs(actions, "success login");
}
}
}
Auth 관련 로직이 필요 없을 시 사용합니다. 이하 사용하는 메서드는 RestControllerTest와 동일합니다.
별도로 설정하지 않아도 Configure context를 자동으로 생성하여 기본 설정을 지원합니다.
현재 사용자의 redis 설정에 맞게 embedded redis를 자동구성합니다. redis가 필요한 test 클래스에 annotation을 설정합니다.
@SpringBootTest
@DisplayName("HelloTest")
@EnableRedisTest
class HelloTest {
@MockBean FirebaseHandler firebaseHandler;
...
1.1.0 버전 이상부터는 redis test 시 testContainer를 활용합니다. 따라서 CI 환경에서도 test container 환경을 설정해야 합니다. 자세한 설명은 아래 링크를 참고하시기 바랍니다. https://knowledge.testcontainers.cloud/testcontainers-cloud-for-ci