J'étais accro aux tests unitaires avec l'opérateur de tampon dans RxJava

Cet article est grossier.

Conclusion

J'avais mis trampoline dans RxJavaPlugins.set *** SchedulerHandler, mais seulement setIoSchedulerHandler.

RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }

Pourquoi

J'écrivais une règle de test comme celle-ci,

RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setComputationSchedulerHandler { Schedulers.trampoline() }
...

Si le code sous test a un opérateur buffer, l'opérateur de tampon utilise en interne le planificateur de calcul, donc écraser le planificateur trampoline vous fera attendre indéfiniment. Le test ne se termine jamais.

@Test
fun testBuffer() {
    val subject = PublishSubject.create<Int>()
    val testObserver = subject
        .buffer(1, TimeUnit.SECONDS)
        .filter { it.isNotEmpty() }
        .test()

    subject.onNext(1)
    subject.onNext(2)

    testObserver.await(2, TimeUnit.SECONDS)
    testObserver.assertValues(listOf(1, 2))
}

Recommended Posts

J'étais accro aux tests unitaires avec l'opérateur de tampon dans RxJava
J'étais accro à NoSuchMethodError dans Cloud Endpoints
Ce à quoi j'étais accro avec l'API REST Redmine
J'étais accro à la méthode du rouleau
J'étais accro au test Spring-Batch
Une histoire dans laquelle j'étais accro à la conversion de type implicite d'ActiveRecord lors du test unitaire
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
Problèmes auxquels j'étais accro lors de la création de l'environnement digdag avec docker
J'étais accro à faire onActivityResult () avec DialogFragment
SpringSecurity J'étais accro à essayer de me connecter avec un mot de passe haché (résolu)
J'étais accro au record du modèle associé
La partie à laquelle j'étais accro dans "Introduction à Ajax dans les applications Web Java" de NetBeans
Ce à quoi j'étais accro lors de l'introduction de la bibliothèque JNI
J'étais accro à la configuration de default_url_options avec l'introduction de la conception de Rails
J'étais accro à la mise à jour de la déclaration dans MyBatis
J'étais accro au réglage de laradock + VSCode + xdebug
J'étais étrangement accro à l'utilisation de l'API Stream de Java avec Scala
L'histoire à laquelle j'étais accro lors de la création de STS
J'étais accro au démarrage de sbt
Ce à quoi j'étais accro lors de la mise en œuvre de l'authentification Google avec des rails
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
[Java] Je veux effectuer distinctement avec la clé dans l'objet
J'étais accro au paramètre API version min23 de registerTorchCallback
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec la première application Android et Kotlin
Mémorandum: Ce à quoi j'étais accro quand j'ai frappé l'API de comptabilité freee
[Rails] J'étais accro aux paramètres nginx lors de l'utilisation d'Action Cable.
Enregistré parce que j'étais accro à l'entrée standard de la classe Scanner
J'ai essayé de résoudre le problème de la séquence Tribonacci en Ruby, avec récurrence.
J'étais accro au scrollview car je ne pouvais pas appuyer sur la taille variable UIView
Une histoire à laquelle j'étais accro à deux reprises avec le paramètre de démarrage automatique de Tomcat 8 sur CentOS 8
J'étais accro à l'utilisation de RXTX avec Sierra
Affectation à plusieurs variables avec l'opérateur ternaire
J'ai essayé d'organiser la session en Rails
J'étais accro à ne pas pouvoir me connecter à AWS-S3 à partir du conteneur Docker
J'étais un peu accro à la comparaison S3 Checksum, alors prenez note.
Je veux obtenir la valeur en Ruby
Ce à quoi j'étais accro lors du développement d'une application Spring Boot avec VS Code
Notez que j'étais accro au traitement par lots avec Spring Boot
Je souhaite modifier le chemin après une nouvelle inscription après m'être connecté avec plusieurs appareils.
Notez que j'étais accro aux paramètres du projet Android d'IntelliJ IDEA
Je veux intégrer n'importe quel TraceId dans le journal
Tokoro j'ai réécrit dans la migration de Wicket 7 à 8
Je souhaite utiliser le mode sombre avec l'application SWT
Organisé comment interagir avec le JDK par étapes
Accro au Webpacker fourni en standard avec Rails 6
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
Lorsque j'ai essayé de faire défiler automatiquement avec JScrollBar, le gestionnaire d'événements n'a été dessiné qu'une seule fois.
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano
J'étais accro à WSl en essayant de créer un environnement de développement d'applications Android avec Vue.js
Ce que j'ai corrigé lors de la mise à jour vers Spring Boot 1.5.12 ・ Ce à quoi j'étais accro
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec l'application Android et Kotlin (2. Traitement lié à la fonction caméra d'Android *)
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
J'étais confus parce qu'il y avait une scission dans le tableau