개발 무지렁이

[Spring Boot] 테스트용 샘플DB 분리, 샘플데이터 생성 본문

Backend/스프링부트

[Spring Boot] 테스트용 샘플DB 분리, 샘플데이터 생성

Gaejirang-e 2022. 12. 7. 15:46

[TestInitData.java]

@Configuration
@Profile("test") // **중요, 이 클래스에 정의된 Bean은 test모드에서만 활성화된다.
public class TestInitData {
    // CommandLineRunner: 앱 실행 직후 초기데이터 세팅 및 초기화에 사용된다.
    @Bean
    CommandLineRunner init(MemberService memberService, PasswordEncoder passwordEncoder) {
        return args -> {
            String password = passwordEncoder.encode("1234");
            memberService.join("user1", password, "user1@test.com");
            memberService.join("user2", password, "user2@test.com");
            memberService.join("user3", password, "user3@test.com");
            memberService.join("user4", password, "user4@test.com");
        };
    }
}

[application-test.yml]

spring:
    datasource:
        url: jdbc:mariadb://127.0.0.1:3307/fileupload_test?
        useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul

[AppTests.java]

@SpringBootTest
@Transactional
@ActiveProfiles({"base-addi", "test"}) // **중요
class AppTests {

    @Autowired
    private MemberService memberService;

    @Test
    @DisplayName("회원의 수")
    void t2() throws Exception {
        long count = memberService.count();
        assertThat(count).isGreaterThan(0);
    }
}
Comments