Mockito à Kotlinany()
OuisA()
Lorsque vous utilisez```java.lang.IllegalStateException: Mockito.any() must not be null
Cette erreur ne se produit pas dans Null-safe Kotlin car ces méthodes renvoient null (s'il s'agit d'un type primitif, elle renvoie la valeur par défaut, donc cette erreur ne se produit pas).
Bien sûr, définir l'argument de méthode à vérifier sur Nullable résoudra le problème, mais vous ne voulez pas faire cela.
Par exemple, je veux me moquer de la partie suivante et vérifier l'argument.
```kotlin
transition.onNext(TransitionType.Success())
Étant donné que le code réel et le test sont des instances différentes au moment de la vérification, je souhaite vérifier s'il s'agit de la même classe. Alors je l'écris comme ça.
Mockito.doNothing().`when`(mockEventBus).onNext(Mockito.isA(TransitionType.Success::class.java))
Cela entraînera une erreur.
Si vous le lancez comme le suivant `` nullReturn () '', cela fonctionnera.
class TestUtils private constructor() {
companion object {
fun <T> isA(type: Class<T>): T {
Mockito.isA<T>(type)
return nullReturn()
}
fun <T> any(): T {
Mockito.any<T>()
return nullReturn()
}
private fun <T> nullReturn(): T = null as T
}
}
Mockito.doNothing().`when`(mockEventBus).onNext(TestUtils.isA(TransitionType.Success::class.java))
Pour des raisons inconnues, Kotlin peut contourner la vérification de null du compilateur en convertissant null, tel que
null as String. Étant donné que je l'ai converti en classe NotNull, est-il réellement jugé comme NotNull même s'il est nul? (Au moment de l'exécution, il sera supprimé avec `` `` TypeCastException
.)
Et pour une raison quelconque, la diffusion dans Generics fonctionne également au moment de l'exécution.
Recommended Posts