@classrules
Ist@beforeclass
Oder@afterclass
Ist eine Alternative zu.
public static
Nanatestrule
Wird vor der Testklasse durch Kommentieren der Klasse aufgerufen.
Es wird jedoch nicht mit PowerMockRunner aufgerufen. Dies scheint ein Fehler zu sein. Referenz
Das Folgende ist die Kotlin-Quelle, die eine ClassRule in einem Feld vom Typ RxImmediateSchedulerRule deklariert, das eine öffentliche statische TestRule implementiert, aber nicht funktioniert.
@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")
}
}
Es ist keine grundlegende Lösung, aber es funktioniert, wenn Sie @ ClassRule``` stoppen und durch
@ Rule``` ersetzen.
@Rule
val schedulers: RxImmediateSchedulerRule = RxImmediateSchedulerRule()
// companion object {
// @JvmField
// @ClassRule
// val schedulers: RxImmediateSchedulerRule = RxImmediateSchedulerRule()
// }
Recommended Posts