`
kingsword
  • 浏览: 7470 次
社区版块
存档分类
最新评论

Coroutine测试

 
阅读更多

kotlinx-coroutines-test库

 

 

class MainViewModelTest {
   @get:Rule
   val coroutineScope =  MainCoroutineScopeRule()
   @get:Rule
   val instantTaskExecutorRule = InstantTaskExecutorRule()

   lateinit var subject: MainViewModel

   @Before
   fun setup() {
       subject = MainViewModel(
           TitleRepository(
                   MainNetworkFake("OK"),
                   TitleDaoFake("initial")
           ))
   }
}

 需要添加两个rule

 

  1. InstantTaskExecutorRule, 用来配置LiveData在支持测试的时候执行任务同步进行
  2. MainCoroutineScopeRule, 用来配置Dispatcher.Main在测试的时候使用从kotlinx-coroutines-test库中提供的TestCoroutineDispatcher,从而可以使用一些快进的高级功能
分享到:
评论

相关推荐

    testco.zip_lua coroutine

    标题中的“testco.zip_lua coroutine”表明这是一个关于Lua协程(coroutine)的测试压缩包,可能包含了用于演示或教学的代码示例。描述中提到的“test for lua coroutine and linux makecontext”揭示了测试的两个...

    Kotlin测试

    7. **Coroutine测试**:Kotlin的协程支持异步编程,测试协程代码时,可以使用`runBlockingTest`或`TestCoroutineDispatcher`来控制并发行为,确保测试的正确执行。 8. **集成测试**:对于涉及多个组件或服务的复杂...

    lua脚本线程控制测试代码

    对于多线程测试,通常会编写多个Coroutine并行执行不同的任务,例如网络请求、计算或者其他耗时操作,以测试它们之间的交互和同步。测试代码可能会包含错误处理和资源管理,确保Coroutine在完成或异常时能正确清理。...

    开源项目-Freezerburn-go-coroutine.zip

    开源项目-Freezerburn-go-coroutine.zip是一个专注于Go语言协程(goroutine)的开源库,旨在简化并发编程。Go语言的协程是其强大的特性之一,它提供了轻量级线程的功能,允许开发者轻松地创建并运行大量并发任务,而...

    Lua协同程序coroutine的简介及优缺点

    3. **可预测的执行顺序**:协同程序的执行顺序完全由程序控制,这在编写测试和调试代码时特别有用,因为行为是可以预见的。 尽管协同程序有诸多好处,但也存在一些缺点: 1. **不支持并行执行**:由于协同程序依赖...

    pthread_coroutine:使用Posix线程实现的coroutine

    使用Posix线程实现的coroutine协程的关键在于栈的保存沿用,有很...做了一下测试,与setcontext的coroutine对比,pthread的coroutine大概慢了10倍。在写之前就知道效率一定不高,因为cpu把大量时间浪费在了线程切换上。

    A asymmetric coroutine library for C..zip

    标题中的"A asymmetric coroutine library for C"指的是一种用于C语言的非对称协程库。协程(Coroutines)是编程中的一个高级概念,它在单线程环境下提供了类似多线程的并发执行能力,但相比线程,协程更轻量级、更...

    FlowRedux,使用来自Kotlin Coroutine的流的RxRedux端口。.zip

    总的来说,FlowRedux 提供了一种用 Kotlin 编写高效、可测试和可维护的状态管理方案,特别适合于 Android 平台。尽管项目仍在进行中,但它的核心概念和设计模式对于理解和实践 Redux 架构仍然具有很高的学习价值。

    AsyncDB, Coroutine AsyncIO B-Tree = AsyncDB.zip

    - **Example或Tests**:示例代码或测试用例,展示如何使用AsyncDB进行数据库操作。 总的来说,AsyncDB是一个创新的数据库访问库,它将现代编程技术与经典数据结构相结合,以实现高性能、低延迟的数据库操作。对于...

    PyQt5并发测试工具

    而`asyncio`则基于协程(coroutine)实现了低延迟、高并发的事件循环模型,适合处理I/O密集型任务,如网络请求。 在`asyncTestProgram.py`文件中,可以看到具体的并发测试逻辑。可能使用了`asyncio`的`async/await`...

    php-ext-coroutine-study:协程的php扩展

    3. `tests`目录:可能包含了一系列测试用例,用于验证协程扩展的功能和性能,这对于确保扩展的正确性和稳定性至关重要。 4. `README.md`或类似的文档:可能会提供关于如何编译、安装和使用扩展的说明,以及对协程API...

    测试平台系列(96) 如何停止测试任务执行.doc

    在异步编程中,`async`和`await`关键字用于定义和调用协程(coroutine),而`asyncio.create_task`则用于创建并启动一个异步任务。 当一个无限循环的异步任务在运行时,例如: ```python async def run(): while ...

    android-mvvm-coroutine:带有 MVVM 模式、android 架构、kotlin 协程、单元测试和 UI 测试的 Kotlin android 应用程序示例

    以下是我使用的几个库: //线程 // 设计组件//本地数据存储// 网络Moshi // JSON 解析器Picasso // 图片加载器Mockito // 单元测试Espresso // UI 测试架构概述: 我使用了几个外部示例来创建这个示例,主要来自这...

    coroutine-dialog-fragment:带有Kotlin coroutine的DialogFragment

    2. **测试用例**:通过单元测试或UI测试验证协程在`DialogFragment` 中的正确使用。 3. **README.md**:详细介绍了库的使用方法、安装步骤和注意事项。 4. **build.gradle**:构建文件,包含了项目的依赖和版本信息...

    coroutinecc:基于ucontext实现的C++协程库

    构建 && 测试 $ make $ bin/test 控制台应当打印: main start coroutine 0 : 0 coroutine 1 : 200 coroutine 0 : 1 coroutine 1 : 201 coroutine 0 : 2 coroutine 1 : 202 coroutine 0 : 3 coroutine 1 : 203 ...

    coroutine:协程的简单实现

    协程的简单实现 目的 学习协程原理,并记录了学习过程,以供有相同需求的同学参考 以博客的形式描述了大概思路 文件说明 coroutine.h 协程头文件 coroutine.c 协程实现 ...client_thread.py 多线程socket测试

    coroutine

    - `Dispatchers.Unconfined`不绑定到任何特定的线程,它可以在任何线程上执行,这通常用于测试场景。 协程的挂起函数是协程的核心概念,它们是非阻塞的,并且可以被其他协程构造器捕获。Kotlin的标准库提供了许多挂...

    v8-coroutine:为 v8 实现协程

    3. **测试**:测试用例可能包括用 JavaScript 编写的示例代码,展示如何在 V8 中使用协程,以及用 Python 编写的测试框架来验证协程功能的正确性。 4. **文档**:项目可能包含了关于如何使用和集成这个协程库的说明...

    coroutine-mocha:摩卡的 bluebird#Promise.coroutine 包装器

    可乐摩卡 使用在 Mocha 测试中启用对生成器的支持。 在运行节点 0.11.x 时使用 --harmony --harmony-generators标志来访问生成器函数,或使用或转换您的测试。安装 npm install co-mocha --save-dev用法只需要在您的...

    20个协程在行动(helper +测试代码示例)- luncliff/协程

    "20个协程在行动(helper +测试代码示例)- luncliff/协程" 是一个开源项目,提供了关于C++协程的实用示例和辅助工具,旨在帮助开发者更好地理解和应用这一特性。 在这个项目中,"luncliff"可能是作者的名字,他/她...

Global site tag (gtag.js) - Google Analytics