[JAVA] @ClassRules ne fonctionne pas avec PowerMockRunner

@classrulesEst@beforeclassOu@afterclassEst une alternative à. public staticNanatestruleAppelé avant la classe de test en annotant la classe.

Cependant, il n'est pas appelé à l'aide de PowerMockRunner. Cela semble être un bug. Référence

Voici la source kotlin qui déclare une ClassRule dans un champ de type RxImmediateSchedulerRule qui implémente une TestRule statique publique, mais cela ne fonctionne pas.

@RunWith(PowerMockRunner::class)
@PrepareForTest(Auth::class)
class LoginViewModelTest {

    companion object {
        @JvmField
        @ClassRule
        val schedulers: RxImmediateSchedulerRule = RxImmediateSchedulerRule()
    }

    @Test
    fun onClickLogin() {

        val mockAuth = PowerMockito.mock(Auth::class.java)

        val target = LoginViewModel(mockAuth)

        target.mail.set("email")
        target.password.set("password")

        val result = Single.just(AuthEntity().apply {
            accessToken = "123456"
            userId = 100
        })
        PowerMockito.`when`(mockAuth.login("email", "password")).thenReturn(result)

        target.onClickLogin().run()

        Mockito.verify(mockAuth).login("email", "password")
    }
}

Ce n'est pas une solution fondamentale, mais cela fonctionne si vous arrêtez @ ClassRule '' et le remplacez par @ Rule```.

    @Rule
    val schedulers: RxImmediateSchedulerRule = RxImmediateSchedulerRule()

//    companion object {
//        @JvmField
//        @ClassRule
//        val schedulers: RxImmediateSchedulerRule = RxImmediateSchedulerRule()
//    }

Recommended Posts

@ClassRules ne fonctionne pas avec PowerMockRunner
Choses à vérifier lorsque vous ne travaillez pas avec proguard
Le programme ne fonctionne pas, le programme ne s'arrête pas ...
ruby get.chomp.to_i ne fonctionne pas, ne se charge pas
Arrays.asList (int []). Contains (int) ne fonctionne pas
Que faire lorsque la validation ne fonctionne pas avec l'action de mise à jour
[Débutant] Lorsque les rails ne fonctionnent pas
Travailler avec des feuilles de calcul Google à partir de Java
Avec CodeDeploy, l'installation ne se termine pas indéfiniment