@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