본문

Unit Test 개념 및 Lifecycle

도입

이번 포스팅에서는 Unit Test에 대해 정리할 예정이다.

개념과 목적

Unit test

https://en.wikipedia.org/wiki/Unit_testing

Unit Test의 목적은 소스 코드의 유닛을 독립적으로, 정상적으로 동작하는지 확인하기 위함이다.
테스트할 Unit을 제외하고 나머지 환경은 개발자가 제어할 수 있어야한다. 그러기 위해서는 mock objects 등으로 방법으로 해결 가능하다.

https://en.wikipedia.org/wiki/Unit_testing

Mock

https://en.wikipedia.org/wiki/Mock_object

mock 객체는 real 객체를 흉내내는 객체이다. 즉, real 객체를 mocking 하므로 대체할 수 있다.
이를 통해 Unit 테스트의 독립적인 환경을 구성 할 수 있다.

Stub

https://en.wikipedia.org/wiki/Test_stub

실제 소프트웨어와 동일한 output을 내는 임시 대체 프로그램이다. 즉, stubbing 하므로 output를 변경할 수 있다.


Mock VS Spy

Android Test librar인 Mockito 에서의 Mock, Spy에 대해 비교해 알아보자. mock은 위에서 정리했고 spy는 real 객체를 호출한다.

https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#spy-T-

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 기본 실습

도입 이번 포스팅에서는 Mockito를 이용해 지난 시간 정리했던 mock , spy , stub 에 대해 실습할 예정이다. Unit Test 개념 및 Lifecycle 도입 이번 포스팅에서는 Unit Test에 대해 정리할 예정이다. 개념과 목

heepie.me

 

#unit test #mock #spy #mockito #android

'컴퓨터 > 이론: 안드로이드' 카테고리의 다른 글

AndroidJUnitRunner  (0) 2020.12.25
Unit Test 기본 실습  (0) 2020.12.20
Unit Test 개념 및 Lifecycle  (0) 2020.12.19
DataStore 개념 및 실습  (0) 2020.12.13
Gradle implementation  (0) 2020.04.02
generated Folder 란?  (0) 2020.03.16

공유

댓글 0