자바생
article thumbnail
[kerdy] 테스트 시간 최적화 및 sourceSets를 사용하여 테스트 분리
Test 2023. 8. 29. 01:23

글을 쓰게 된 이유 레벨 3을 마무리하고 나니 커디에 약 300개의 테스트가 있었습니다. application layer에서는 @SpringBootTest를 통한 통합 테스트 presentation layer에서는 @WebMvcTest 슬라이스 테스트 JpaRepository에서는 @DataJpaTest 슬라이스 테스트를 진행했습니다. 이때 문제가 있었습니다. rest docs가 잘 만들어지는 테스트 하려면 모든 테스트를 실행해야 하고, service에서 기능을 하나 만들고, 해당 기능뿐만 아니라 전체 테스트를 실행할 때 rest docs 테스트까지 실행해야 합니다. 왜냐하면 service에서는 해당 테스트가 다른 테스트에 영향을 주는지 확인해야 하기 때문입니다. 테스트 자체가 내가 작성한 기능의 동작여..

article thumbnail
gradle task를 이용하여 Test 분리
Test 2022. 8. 4. 21:10

발단 testcontainers를 공부하면서 unit test, integration test에 관심을 가지게 됐습니다 그래서 나중에 unit test만 실행시키고, integration test만 실행시키는 방법이 없을까해서 구글링을 하다가 찾게 되어 글을 쓰고자 합니다 build.gradle 수정 def test = tasks.named('test') { useJUnitPlatform() { excludeTags "integration" } testLogging { events "PASSED", "FAILED", "SKIPPED" } } def integration = tasks.register("integration", Test) { useJUnitPlatform { includeTags "inte..

article thumbnail
Testcontainers 설정
Test 2022. 7. 30. 00:55

아래 코드 예시는 github에서 보실 수 있습니다 dependency testImplementation "org.testcontainers:testcontainers:1.17.3" testImplementation "org.testcontainers:junit-jupiter:1.17.3" testImplementation "org.testcontainers:mysql:1.17.3" Account 먼저 테스트에 사용할 Account Entity와 AccountService의 기본적인 CRUD 로직입니다 @Entity @Getter @NoArgsConstructor public class Account { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) ..

Testcontainers?
Test 2022. 7. 30. 00:48

발단 인메모리 DB인 H2를 사용하여 로컬에서 통합 테스트를 구성했습니다. 하지만 해당 프로젝트의 서버 DB는 mysql이기 때문에 호환성 여부를 확인했습니다. H2에서는 Compatibility mode 를 지원하여 다른 DB 쿼리와 호환성을 제공하지만 100% 보장이 되지 않기 때문에 MySQL에서만 사용하는 특정 쿼리에 에러가 발생합니다. 그래서 로컬에서 서버 DB와 똑같은 MySQL를 통한 통합 테스트를 구성하면 괜찮을 것이라 생각했습니다. 하지만 해당 방법은 환경 세팅이 되어있지 않는 동료가 접하기에는 환경 세팅이 헤비할 수 있습니다. 독립적인 테스트 환경, 즉, 멱등성을 보장하기 위해 JUnit 테스트를 지원하는 Java 라이브러리인 Test Container를 알게 됐습니다. Test Con..

728x90

검색 태그