차지

[Test] Test code 작성 본문

Android/TDD

[Test] Test code 작성

Cha_Ji 2021. 9. 22. 00:07

Junit Test

  • Android 에서 단위 테스트를 진행할 때에는 Junit 라이브러리를 사용합니다. 이 글은 Junit4 버전으로 작성했습니다.
  • build.gradle에 코드를 추가하면 사용할 수 있습니다.
    dependencies {
      ...
      testImplementation 'junit:junit:4.+'
      ...
    }
  • 테스트할 객체나 함수에 커서를 올리고 cmd(ctrl) + shift + T 단축키를 사용하면
    테스트 파일을 생성하거나, 이미 존재한다면 테스트 파일로 이동합니다.
  • @Test 어노테이션을 붙인 함수를 작성하면, 테스트를 진행할 수 있습니다.

Test Annotation

@Test

  • 작성할 테스트 코드입니다. 함수 이름에는 여러가지 컨벤션이 있습니다.
  • snake_case를 사용해서 Method_When_Result 와 같이 입력하기도 하고 (외에도 다양한 언더바 방식이 있습니다.)
  • CamelCase를 사용해서 MethodWhenResult 와 같이 입력하기도 합니다.
  • 백틱을 붙여서 `method when result`와 같이 띄어쓰기를 넣기도 하며
  • 한글을 사용하기도 합니다. 함수 조건 결과
@Test
fun plus_clickButton_update() {

}

@Before, @After

  • 테스트를 시작할 때, 테스트가 끝난 뒤에 처리할 내용을 담습니다.
  • 메모리의 누수를 막기 위한 종료 코드를 @After 어노테이션을 붙인 함수에 작성하기도 합니다.

@RunWith()

  • 테스트를 실행시키는 Runner를 지정합니다.

@SuiteClasses

  • 테스트 스윗을 구성해 단위 테스트를 한꺼번에 수행할 수 있습니다.

@Rule

  • 테스트를 보조해줍니다. 당장의 로직과 관련이 없는 다양한 조건을 설정할 수 있습니다.
  • 비동기적인 코드를 테스트하는 문제를 어느정도 해소해줍니다.

코드 작성

  • test 코드를 Given - When - Then 으로 대화하듯이 작성하면 보기에도 깔끔하고 작성하기도 쉽습니다.
  • 변수를 선언하고, 상황이 주어지면, assert함수로 결과를 검증합니다.
  • assert 함수에는 assertThat, assertEquals, assertNull 등 웬만한 상황은 다 검증할 수 있습니다.
@Test
fun plus_clickButton_updateResult() {
    // Given two number
    val one = 1
    val two = 2

    // When click button
    val result = click()

    // Then update
    assertEquals(3, result)
}

Hamcrest & Truth

  • 단언(Assertion)을 보기 쉽게 작성하기 위한 라이브러리입니다.
  • assertThat().isEqualTo() 와 같이 사용할 수 있습니다.

'Android > TDD' 카테고리의 다른 글

[Test] private 변수 테스트에서 사용하기  (0) 2021.10.10
[Test] LiveData test하기  (0) 2021.09.22
[Test] Test Double & Mock  (0) 2021.09.21
[Test] TDD  (0) 2021.09.21