느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

최근 나의 버려진 프로젝트인 헬창닷컴..(http://www.helchang.com)) 이 프로젝트는 내가 위메프에 입사하게 해준? 고마운 프로젝트인데, 회사 입사 이후에는

매우 바쁜관계 및 GCP의 과금문제로 버려둔 상태로 있던 프로젝트이다.

이 프로젝트를 살리고, 최근 배우고있는 기술들을 적용하자는 의미에서 이 프로젝트를 다시 살려보고자 최근에 노력하고 있다.

그 첫 단추로 라즈베리 파이에 Jenkins를 설치하여 이 프로젝트에 CD(Continuous Deploy)를 구성하였다.

https://honeyinfo7.tistory.com/304

그리고 이제, 이 프로젝트를 살리고자 Maven으로 설정되어있던 설정을 Gradle로 Converting하고 소스코드를 하나하나 복기(?)하는 과정을 거치고 있다.

복기하는 김에, 테스트코드를 작성중인데 최근 사용하고 있는, testcontainer를 사용하여 Database 테스트를 해보고자 한다.

build.gradle

testImplementation 'org.testcontainers:mysql:1.15.3'
testImplementation "org.testcontainers:junit-jupiter:1.15.3"

UserRoleRepositoryTest.java

@Sql("/init_table.sql")
@Sql("/user_role_repository.sql")
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class UserRoleRepositoryTest
{
    @Autowired
    UserRoleRepository userRoleRepository;

    @Test
    public void findByAppUser_2Role_HasTwoRole()
    {
        // user_role_repository.sql 파일에 2개의 role이 포함되어 있다.
        User user = User.builder().id("jabel123").email("jabel123@naver.com").build();

        List<UserRole> roleList = userRoleRepository.findByAppUser(user);
        assertThat(roleList.size()).isEqualTo(2);
    }
}
  • @Sql : 테스트코드 실행되기 전에 이 어노테이션에 입력된 .sql파일을 실행할 수 있게 해준다
  • @DataJpaTest : JPA 관련 테스트 설정만 로드한다. DataSource의 설정이 정상적인지, JPA를 사용하여 데이터를 제대로 생성, 수정, 삭제하는지 등의 테스트가 가능하다. (내장DB를 사용한다고 한다.)
  • @AutoConfigureTestDatabase(replace = [설정값]) :
    • Replace.Any : 기본적으로 내장된 Embedded 데이터베이스를 사용한다.
    • Replace.NONO : 설정한 프로퍼티에 따라 데이터소스가 적용된다.(none을 사용하여 docker MySQL을 사용한다.)

application.yml

spring:
  datasource:
    driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
    url: jdbc:tc:mysql:8:///
  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect

대략 중요한 파일은 위의 세개와 같다.

수행결과 docker에서 MySQL을 실행시키는 과정이 꽤 길었다. 가장 궁금한 사항은 여러개의 테스트를 띄울 경우 도커에서 MySQL을 여러번 실행시키는지에 대한 여부였다.

확인결과, 여러개의 테스트가 실행되더라도 도커에서 mysql을 띄우는 작업은 딱 한번 수행되는것을 확인할 수 있었다.

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!