스팀 앱 개발기 #35 - 유닛 테스트용 WalletViewModelTest 클래스 구현 후 보이는 문제점

지난 포스트에서 보여 드린 WalletViewModelTest 클래스를 다시 한번 살펴보겠습니다.

// To test WalletViewModel class
class WalletViewModelTest {

    @Rule
    @JvmField
    val instantExecutorRule = InstantTaskExecutorRule()

    var walletViewModel = WalletViewModel()

    companion object {
        @JvmStatic
        @BeforeClass
        fun setUp() {
            // Refer to https://medium.com/@jungil.han/junit-rxjava-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%BB%B4%ED%8C%A8%EB%8B%88%EC%96%B8-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-e8d17b674bdd
            RxJavaPlugins.setIoSchedulerHandler {
                Schedulers.trampoline()
            }
            RxAndroidPlugins.setInitMainThreadSchedulerHandler {
                Schedulers.trampoline()
            }
        }

        @JvmStatic
        @AfterClass
        fun teardown() {
            RxJavaPlugins.reset()
            RxAndroidPlugins.reset()
        }
    }

    // Test case 1: Trying to get the wallet of a valid account.
    @Test
    fun readSteemitWallet_case1() {
        walletViewModel.readSteemitWallet("dorian-mobileapp").subscribe { steemitWallets ->
            assertEquals("dorian-mobileapp", walletViewModel.steemitWallet.value?.account)
        }
    }

    // Test case 2: Trying to get the wallet of an invalid account.
    @Test
    fun readSteemitWallet_case2() {
        walletViewModel.readSteemitWallet("invalid10293845").subscribe { steemitWallets ->
            assertEquals("", walletViewModel.steemitWallet.value?.account)
        }
    }

}

문제 1 - ViewModel 클래스 추가 후 테스트 코드 작성시 중복 코드

지금 당장 오류가 있는 것은 아닙니다. 문제는요. 앞으로 수많은 ViewModel 클래스들을 만들고 이들을 테스트해야 하는데요. 테스트 클래스들을 만들 때마다 setUp, teardown 메소드들을 추가해야 합니다. 중복 코드가 들어가는 거죠. 그렇게 개발하는 것은 옳지 않습니다. 효율적인 개발을 위해 우리는 중복 코드를 최소화해야 합니다.


문제 2 - companion object 안에 정의된 setUp, teardown 메소드들

문제 1은 공통 클래스를 만들어 해결하고자 합니다. 그런데 setUp, teardown 메소드들은 companion object 안에 정의되어 있습니다. 이들을 공통 클래스에 정의하면, 하위 클래스에서 이들을 활용할 수 있을까요? 이부분은 아직 몰라서 확인해봐야 합니다.

문제 1, 2를 어떻게 해결할지가 다음 포스트 주제가 되겠습니다.


지난 스팀 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57956.22
ETH 3126.99
USDT 1.00
SBD 2.45