Skip to content

SWM-KAWAI-MANS/test-manager

Repository files navigation

test-manager

test-manager

Description

test-manager는 Spring-boot 환경에서 테스트환경을 좀 더 간편하게 설정하고 자동화를 할 수 있는 라이브러리 입니다

Features

  • embedded mongodb, redis 구성 환경 제공
  • Spring-security default mock user 설정
  • Spring-rest-docs 테스트 진행시 문서 자동화

Getting Started

To get started with test-manager, follow these steps:

  1. Add the jitpack.io repository to your project's build.gradle file:
repositories {
    ...
    maven { url 'https://jitpack.io' }
}
  1. Add the jwt-manager dependency to your app-level build.gradle file:
dependencies {
	      testImplementation 'com.github.SWM-KAWAI-MANS:test-manager:1.1.0'
}

docs

RestControllerTest

WebMvtTest 시 Rest-api 문서화를 자동으로 만들어주는 test에 사용합니다.

toRequestBody(Object)

MockMvc test 시 request body를 구성합니다.

setPrintDocs(ResultActions actions, String title)

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");
        }
    }
  }

RestControllerNoneAuthTest

Auth 관련 로직이 필요 없을 시 사용합니다. 이하 사용하는 메서드는 RestControllerTest와 동일합니다.

mongo

MongoAutoConfig

별도로 설정하지 않아도 Configure context를 자동으로 생성하여 기본 설정을 지원합니다.

redis

EnableRedisTest

현재 사용자의 redis 설정에 맞게 embedded redis를 자동구성합니다. redis가 필요한 test 클래스에 annotation을 설정합니다.

사용 예

@SpringBootTest
@DisplayName("HelloTest")
@EnableRedisTest
class HelloTest {
    @MockBean FirebaseHandler firebaseHandler;
    ...

CI 환경 사용 시

1.1.0 버전 이상부터는 redis test 시 testContainer를 활용합니다. 따라서 CI 환경에서도 test container 환경을 설정해야 합니다. 자세한 설명은 아래 링크를 참고하시기 바랍니다. https://knowledge.testcontainers.cloud/testcontainers-cloud-for-ci