[JAVA] @ClassRules funktioniert nicht mit PowerMockRunner

@classrulesIst@beforeclassOder@afterclassIst eine Alternative zu. public staticNanatestruleWird 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

@ClassRules funktioniert nicht mit PowerMockRunner
Dinge zu überprüfen, wenn Sie nicht mit Proguard arbeiten
Das Programm funktioniert nicht, das Programm hört nicht auf ...
ruby get.chomp.to_i funktioniert nicht, lädt nicht
Arrays.asList (int []). Enthält (int) funktioniert nicht
Was tun, wenn die Validierung mit der Aktualisierungsaktion nicht funktioniert?
[Anfänger] Wenn Schienen nicht funktionieren
Arbeiten Sie mit Google-Tabellen aus Java
Mit CodeDeploy endet die Installation nicht endlos