Testing Codes/JUnit5

    [JUnit5] @AfterEach 사용해 테스트 실행 이후 작업 처리하기

    @AfterEach는 언제 사용하는가? @AfterEach를 사용하면, 각 테스트 이후 실행되어야 하는 작업을 설정할 수 있다. 예를 들어 영속적인 데이터들이 초기화 되어야 하는 경우 사용될 수 있으며, 대표적으로 테스트 시 사용하는 데이터 베이스를 테스트 하는 경우 인메모리 데이터베이스를 사용하게 되는데, 이런 데이터 베이스를 초기화 할 때 사용할 수 있다. @AfterEach 사용 예시 예를 들어 다음과 같이 MyDatabase라는 이름의 RoomDataBase가 있고, 테스트에 MyDatabase를 사용한다면, 마지막에 꼭 close를 실행해줘야 테스트 시 리소스를 정리할 수 있다. 이때, 다음과 같이 @AfterEach를 사용해 myDatabase를 close 해줌으로써 각 테스트 이후 데이터 베..

    [JUnit5] @BeforeEach와 @BeforeAll은 어떤 차이가 있을까?

    @BeforeEach와 @BeforeAll의 차이 @BeforeEach와 @BeforeAll는 실행 시점에 차이가 있다. 둘 모두 테스트 시작 전에 실행되는 것은 같지만, @BeforeEach는 개별 테스트 실행 전에 실행되며, @BeforeAll은 모든 테스트 실행 전에 한 번만 실행된다. @BeforeEach 사용해보기 예를 들어 다음과 같은 SimpleTest 테스트 코드를 살펴보자. class SimpleTest { @BeforeEach fun setUp() { println("Before Each") } @Test fun test1() { } @Test fun test2() { } } SimpleTest 테스트는 @BeforeEach가 붙은 setUp 함수에서 Before Each를 출력하며, ..

    [JUnit5] @BeforeEach를 사용한 테스트 환경 설정

    하나의 클래스에 대한 여러 테스트 만들기 테스트를 작성하게 되면 하나의 클래스에 여러 테스트가 작성된다. 예를 들어 다음과 같이 가변 인자로 받는 모든 정수에 대해 곱하기를 실행하는 SimpleMultiplier 객체가 있다고 해보자. class SimpleMultiplier() { fun multiplyAll(vararg numbers: Int): Int { return numbers.fold(1) { acc, number -> acc * number } } } 이 객체에 대한 간단한 테스트 케이스와 테스트를 작성하면 다음과 같다. 1. 일반적인 곱하기가 제대로 실행되는지 살펴야 한다. @Test fun `check_2_multiply_3_is_6`() { // Given val simpleMultip..

    [Unit Testing] JUnit5를 사용해 Kotlin 유닛 테스트 환경 설정하고 간단한 테스트 실행해보기

    코틀린 환경에서 JUnit 프레임웍을 사용한 테스팅 Kotlin 유닛 테스트 환경을 설정하기 위해서는 일반적으로 JUnit 프레임웍을 사용한다. JUnit 프레임웍은 JUnit4와 JUnit5를 모두 사용할 수 있고, 아직 많은 회사들에서 JUnit4를 사용하고 있지만 이번 글에서는 JUnit5를 사용해 개발환경을 설정하는 방법에 대해 다룬다. 프로젝트에 JUnit5 의존성 설정하기 프로젝트에 JUnit5에 대한 의존성을 설정하기 위해서는 build.gradle.kts 스크립트를 다음과 같이 바꿔야 한다. JUnit5를 사용하려면 dependencies 블록의 junit-jupiter-api을 testImplementation을 사용해 컴파일 시간의 의존성을 설정하고, testRuntimeOnly를 사용..