当前位置: 首页 > 知识库问答 >
问题:

单元测试从单个livedata发出的值的序列

安承教
2023-03-14

我想对LiveData的结果序列进行单元测试。我有一个结果LiveData,它在加载、成功或错误时发出值。我想对其进行测试,以确保首先发出加载值,然后是成功或错误值。

有办法做到这一点吗?

共有1个答案

文鸣
2023-03-14

是的,这是可能的,我将包括一个使用 mockk 库的示例。假设您有一个视图模型和一个实时数据

@MockK
lateinit var observer: Observer<Your_type_here>

然后在“之前”(或者如果你只有一个测试,你可以粘贴到那里)功能中,你应该添加这个

viewModel.result.observeForever(observer)
every { observer.onChanged(any()) } just Runs

在测试中,你会得到类似的东西

// given - your mocking calls here
// when 
viewModel.doSomethingAndPostLiveDataResult()
// then
verifySequence {
    observer.onChanged(Your_type_here)
    observer.onChanged(Something_else)
}
 类似资料:
  • 为了让单元测试跑一个批处理的任务,这个框架必须加载这个任务的ApplicationContext,两个注解的触发方式: @RunWith(SpringJUnit4ClassRunner.class):表明这个类需要使用Spring的测试工具 @ContextConfiguration(locations = {…}):表明哪些xml文件包含ApplicationContext @RunWith

  • 问题内容: 如何确定unittest方法的顺序?字母或数字前缀是否正确? 要么 问题答案: 您可以通过将sortTestMethodsUsing设置为None来禁用它:http ://docs.python.org/2/library/unittest.html#unittest.TestLoader.sortTestMethodsUsing 对于纯单元测试,您是对的。但是对于组件测试和集成测试…

  • 我正在使用spring test运行JUnit测试,我的代码如下所示: 我想在所有测试之前回滚处于状态的数据库。表会回滚,但id生成的顺序会随着每次测试而增加。 请帮我找到在每次测试前设置起始值顺序的方法。 我正在使用Spring、Hibernate和HsqlDb

  • Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。

  • 英文原文:http://emberjs.com/guides/testing/unit/ 单元测试用于测试代码的一个小片段,确保其功能正常。与集成测试不同,单元测试被限定在一个范围内,并且不需要Ember应用运行。 全局 vs 模块 过去如果没有作为一个全局变量加载整个Ember应用,要对应用进行测试非常困难。通过使用模块(CommonJS,AMD等)来编写应用,可以只加载被测试的部分,而不用将其