@classrules
Est@beforeclass
Ou@afterclass
Est une alternative à.
public static
Nanatestrule
Appelé 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