测试RxJava2

译者注:关注InfoQ资讯的读者可能已经留意到,我们前面给出了一篇很好的RxJava文章“测试RxJava”。本文是上一篇文章的修订,用相同的例子循序渐进地介绍了如何测试RxJava2。译者将两篇文章中的不同之处用粗体标识出来,并使用添加注释的形式说明示例代码中的差异之处,以供读过前篇的读者快速浏览本文。\

\

关键要点:

\
  • RxJava含有内建的、测试友好的解决方案。 \
  • 使用TestSubscriber去验证Observable。 \
  • 使用TestScheduler可实现对时间的严格控制。 \
  • Awaitility库提供了对测试环境进一步的控制。
\

本文是“测试RxJava”一文的修订,根据RxJava2规范做了全面更新。\

你已经阅读过RxJava的相关内容,也已经在互联网上体验过像“RxJava实例解析”中的那些示例,现在打算在自己的代码中探索一下响应式编程了。但是,现在却一直困扰着如何测试那些可能会在代码库中发现的新功能呢?\

使用响应式编程,就必须转变对给定问题的推理方式,因为我们要聚焦于作为事件流的流动数据,而非个别数据项。事件通常是被不同的线程所产生和消费,因此在编写测试时必须要对并发问题有着清晰的认识。幸运的是,RxJava提供了测试Observable和Subscription的内建支持,并且是直接构建于RxJava的核心依赖中。\

第一步

\

让我们回顾一下在“RxJava by Example”一文中所给出的那个词汇的例子,看一下如何对该例子作测试。让我们从基础测试工具的设置开始。在我们的测试架构中,使用了JUnit作为测试工具。

import io.reactivex.Observable;\import io.reactivex.observers.TestObserver;\import io.reactivex.plugins.RxJavaPlugins;\import io.reactivex.schedulers.Schedulers;\//RxJava2中,包名由rx.xxx改为io.reactivex.xxx。\import org.junit.Test;\import java.util.*;\import static java.util.concurrent.TimeUnit.SECONDS;\import static org.awaitility.Awaitility.await;\import static org.junit.Assert.assertThat;\import static org.hamcrest.Matchers.*;\\\public class RxJavaTest {\    private static final List\u0026lt;String\u0026gt; WORDS = Arrays.asList(\       \"the\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值