Testing Codes

대량 데이터에 대한 테스트 필요성 모든 클래스가 클린 아키텍처를 기반으로 만들어지면 좋겠지만, 프로그램이 복잡해지고 많은 요구사항이 들어갈 수록 클래스의 함수가 점점 복잡해질 수 있다. 이런 경우 수 많은 테스트 케이스가 생기게 되는데, 이런 테스트를 위해 @ParameterizedTest와 @CsvFileSource를 함께 사용해 테스트를 진행할 수 있다. csv파일 준비하기 테스트를 위한 csv파일은 src/test/resources 경로에 넣으면 된다. SimpleMultiplierTestCase.csv 파일을 다음과 같이 만들어 resources 폴더 아래에 넣도록 하자. 그러면 CsvFileSource를 사용해 테스트 하기 위한 준비가 마쳐진다. 개인적으로 CsvFileSource를 사용할 때 ..
@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..
@AfterEach는 언제 사용하는가? @AfterEach를 사용하면, 각 테스트 이후 실행되어야 하는 작업을 설정할 수 있다. 예를 들어 영속적인 데이터들이 초기화 되어야 하는 경우 사용될 수 있으며, 대표적으로 테스트 시 사용하는 데이터 베이스를 테스트 하는 경우 인메모리 데이터베이스를 사용하게 되는데, 이런 데이터 베이스를 초기화 할 때 사용할 수 있다. @AfterEach 사용 예시 예를 들어 다음과 같이 MyDatabase라는 이름의 RoomDataBase가 있고, 테스트에 MyDatabase를 사용한다면, 마지막에 꼭 close를 실행해줘야 테스트 시 리소스를 정리할 수 있다. 이때, 다음과 같이 @AfterEach를 사용해 myDatabase를 close 해줌으로써 각 테스트 이후 데이터 베..
Dev.Cho
'Testing Codes' 카테고리의 글 목록 (5 Page)