반응형
- 안드로이드 테스트 코드 작성에 대한 각종 내용을 기록하는 말머리 [Android Test]
- 아래와 같이 원주율을 활용한 계산 Class가 있다.
class MyCalc : Calculations {
private val pi = 3.14
override fun calculateCircumference(redius: Double): Double {
return 2 * pi * redius
}
override fun calculateArea(redius: Double): Double {
return pi * redius * redius
}
}
- JUnit4 기반 test 코드를 작성해 본다.
- 먼저 클래스명에서 오른쪽 마우스 - 생성 - 테스트를 통해 해당 클래스를 위한 테스트 클래스를 생성한다.
- 테스트를 위한 클래스 초기화 준비를 한다. 그리고 이 클래스를 @Before 어노테이션을 통해 실제 초기화를 진행한다.
class MyCalcTest {
private lateinit var myCalc: MyCalc
@Before
fun setUp() {
myCalc = MyCalc()
}
- 테스트 실행 전에 필요한 초기 작업을 수행할 수 있게 해주는 아주 중요한 어노테이션이다.
- 유사한 역할의 어노테이션들이 아래와 같이 존재한다.
@Before | 각 테스트 전에 실행 (JUnit 4) |
@After | 각 테스트 후에 실행 |
@BeforeClass | 테스트 클래스 전체에서 한 번만 실행 (static) |
@BeforeEach | JUnit 5의 @Before 대응 |
@BeforeAll | JUnit 5의 @BeforeClass 대응 |
- 그리고 실제 테스트 로직을 넣을 함수를 구현하여 @Test 어노테이션을 붙여준다.
@Test
fun calculateCircumference_radiusGiven_returnsCorrectResult() {
val result = myCalc.calculateCircumference(2.1)
assertThat(result).isEqualTo(13.188)
}
- 2.1의 값을 넣었을 때 원주율 계산 처리 값이 13.188과 동일한지 비교하는 것이다.
- assertThat은 값을 검증할 때 사용하고, 아래와 같은 사용 예시가 있다.
import com.google.common.truth.Truth.assertThat
assertThat(3 + 2).isEqualTo(5)
assertThat(listOf(1, 2, 3)).contains(2)
assertThat("Hello").startsWith("He")
- 참고로 해당 기능은 아래 내용이 gradle에 추가되어야 한다.
testImplementation(libs.truth)
- 이제 해당 테스트 로직 함수를 실행하여 테스트 결과 확인이 가능하다.
반응형