junit

@ValueSource를 사용한 @ParameterizedTest의 한계 이전 글에서는 SimpleMultiplier 객체에 대해 @ParameterizedTest와 @ValueSource를 사용해 다양한 Input 값이 있을 때 Output 값이 정확히 나오는지 테스트를 진행했다. class SimpleMultiplier() { fun multiplyAll(vararg numbers: Int): Int { return numbers.fold(1) { acc, number -> acc * number } } } class SimpleMultiplierTest { lateinit var simpleMultiplier: SimpleMultiplier @BeforeEach fun setUp() { simple..
ParameterizedTest란? 일반적으로 테스트를 실행할 때는, 함수에 대한 하나의 입력 값만 테스트하지 않는다. 예를 들어 간단한 곱샘 연산을 실행하는 Simple Multiplier가 다음과 같이 있다고 해보자. class SimpleMultiplier() { fun multiplyAll(vararg numbers: Int): Int { return numbers.fold(1) { acc, number -> acc * number } } } 이 SimpleMultiplier에 대한 테스트는 다음과 같이 세가지 경우에 대해 작성될 수 있다. 1. 양의 정수 끼리 곱하는 경우 2. 양의 정수와 음의 정수를 곱하는 경우 3. 0을 포함해 곱하는 경우 class SimpleMultiplierTest {..
반복된 테스트가 필요한 이유 일반적으로 멀티 스레드 환경에서 동작하는 코드를 작성했을 때, 경쟁상태 문제로 인해 간헐적으로 버그가 날 수 있다. 이렇게 간헐적으로 버그를 발생 시키는 코드에 대한 테스트 코드를 작성하면 Flacky Test 문제가 생긴다. *결과가 일관되지 않는 테스트를 :lacky Test 라고 부른다 이런 경우 JUnit4에서는 테스트를 반복하기 위해서는 반복하는 코드를 직접 넣어주어야 했고, 이렇게 하나의 테스트에서 반복해서 테스트를 실행한다면, 넣는다면 몇 번째 테스트에서 실패했는지, 몇 번이나 테스트를 실패했는지 알 수 없는 문제가 있었다. @Test fun dummyTest() { repeat(100) { runTest { val result = contentSearcher.s..
@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를 출력하며, ..
코틀린 환경에서 JUnit 프레임웍을 사용한 테스팅 Kotlin 유닛 테스트 환경을 설정하기 위해서는 일반적으로 JUnit 프레임웍을 사용한다. JUnit 프레임웍은 JUnit4와 JUnit5를 모두 사용할 수 있고, 아직 많은 회사들에서 JUnit4를 사용하고 있지만 이번 글에서는 JUnit5를 사용해 개발환경을 설정하는 방법에 대해 다룬다. 프로젝트에 JUnit5 의존성 설정하기 프로젝트에 JUnit5에 대한 의존성을 설정하기 위해서는 build.gradle.kts 스크립트를 다음과 같이 바꿔야 한다. JUnit5를 사용하려면 dependencies 블록의 junit-jupiter-api을 testImplementation을 사용해 컴파일 시간의 의존성을 설정하고, testRuntimeOnly를 사용..
Dev.Cho
'junit' 태그의 글 목록 (3 Page)