본문 바로가기
Android/Unit Test

[Android] Unit Test 작성하기 -1

by startSW 2023. 9. 22.

아래 글은 이전에 작성한 ViewModel 클래스를 참고로 작성되었습니다.

https://swjsw.tistory.com/20

 

[Android] Livedata 사용하기

아래 글은 이전에 작성한 ViewModel 클래스를 참고하여 작성 되었습니다. https://swjsw.tistory.com/19 Android ViewModel 사용법 1. ViewModel Implementation 하기 App 모듈의 build.gradle에 아래 내용을 추가하고 sync 합

swjsw.tistory.com

 

1. Unit Test 라이브러리 Implementation 하기

  • App 모듈의 build.gradle에 아래 내용을 추가하고 sync 합니다.
  • 보통은 기본으로 추가되어 있습니다.
dependencies {
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
    
   testImplementation("androidx.arch.core:core-testing:2.2.0")
}

 

2. ViewModel 클래스를 테스트할 Test Class를 만듭니다.

  • Test 파일은 “/app/src/test/java/com/swjsw/app/” 폴더밑에 생성합니다.

class FlashlightViewModelUnitTest {

    @get:Rule
    val rule = InstantTaskExecutorRule()

    private lateinit var viewModel: FlashlightViewModel

    @Before
    fun setup() {
        viewModel = FlashlightViewModel()
    }

    @Test
    fun testTurnOnFlashlight() {
        viewModel.turnOnFlashlight()
        // LiveData 값이 변경되었는지 확인
        assert(viewModel.isFlashlightOn.value == true)
    }

    @Test
    fun testTurnOffFlashlight() {
        viewModel.turnOffFlashlight()
        // LiveData 값이 변경되었는지 확인
        assert(viewModel.isFlashlightOn.value == false)
    }
}

 

  • 위 코드에서 InstantTaskExecutorRule() 을 사용하는 이유는 아래와 같습니다.

*InstantTaskExecutorRule*은 Android Architecture Components 중 하나인 LiveData를 테스트할 때 사용되는 JUnit 규칙입니다. LiveData는 기본적으로 메인 스레드에서 작동하므로 테스트에서 LiveData를 사용할 때 메인 스레드 규칙을 따르지 않으면 예외가 발생할 수 있습니다.

*InstantTaskExecutorRule*을 사용하면 LiveData를 비동기적으로 테스트할 때 메인 스레드 규칙을 자동으로 따르게 됩니다. 이 규칙을 사용하면 LiveData가 데이터를 변경할 때 테스트 스레드에서 동작하는 것처럼 보이며, LiveData의 값을 즉시 업데이트할 수 있습니다.

즉, *InstantTaskExecutorRule*을 사용하면 LiveData를 테스트할 때 메인 스레드와 관련된 문제를 해결하고, LiveData를 더 쉽게 테스트할 수 있도록 도와줍니다. 이렇게 함으로써 UI 스레드와 관련된 문제나 비동기 코드를 테스트하기가 더 쉬워집니다.

 

 

3. Test Class 파일에서 오른쪽 마우스 버튼을 클릭한 다음 ‘Run ~’ 메뉴를 클릭합니다.

 

  • 테스트 결과를 아래와 같이 확인할 수 있습니다.

 

  • 그리고 확인 버튼을 클릭하면 세부 테스트 항목을 볼 수 있습니다.