본문
Unit Test 개념 및 Lifecycle
컴퓨터/이론: 안드로이드 2020. 12. 19. 16:30
도입
이번 포스팅에서는 Unit Test에 대해 정리할 예정이다.
개념과 목적
Unit test
Unit Test의 목적은 소스 코드의 유닛을 독립적으로, 정상적으로 동작하는지 확인하기 위함이다.
테스트할 Unit을 제외하고 나머지 환경은 개발자가 제어할 수 있어야한다. 그러기 위해서는 mock objects 등으로 방법으로 해결 가능하다.
Mock
mock 객체는 real 객체를 흉내내는 객체이다. 즉, real 객체를 mocking 하므로 대체할 수 있다.
이를 통해 Unit 테스트의 독립적인 환경을 구성 할 수 있다.
Stub
실제 소프트웨어와 동일한 output을 내는 임시 대체 프로그램이다. 즉, stubbing 하므로 output를 변경할 수 있다.
Mock VS Spy
Android Test librar인 Mockito
에서의 Mock, Spy에 대해 비교해 알아보자. mock은 위에서 정리했고 spy는 real 객체를 호출한다.
Mock
- Dummy class 생성
- stub를 설정한 경우, stub 반환
- stub를 설정하지 않은 경우, null or Exception (Mocking library에 따름)
Spy는
- Real class 생성
- stub를 설정한 경우, stub 반환
- stub를 설정하지 않은 경우, real result 반환
Test LifeCycle 실습
실습
class TestLifeCycle {
init {
println("init test")
}
@Before
fun setUp() {
println("\tset up test")
}
@After
fun tearDown() {
println("\ttear down test")
}
@Test
fun test1() {
println("\t\ttest1")
}
@Test
fun test2() {
println("\t\ttest2")
}
@Test
fun test3() {
println("\t\ttest3")
}
companion object {
@BeforeClass
@JvmStatic
fun beforeClass() {
println("before class")
}
@AfterClass
@JvmStatic
fun afterClass() {
println("after class")
}
}
}
결과
before class
init test
set up test
test1
tear down test
init test
set up test
test2
tear down test
init test
set up test
test3
tear down test
after class
다음 실습
#unit test #mock #spy #mockito #android
'컴퓨터 > 이론: 안드로이드' 카테고리의 다른 글
AndroidJUnitRunner (0) | 2020.12.25 |
---|---|
Unit Test 기본 실습 (0) | 2020.12.20 |
DataStore 개념 및 실습 (0) | 2020.12.13 |
Gradle implementation (0) | 2020.04.02 |
generated Folder 란? (0) | 2020.03.16 |
댓글