TestScope 协程测试中使用的高级示例

Dan*_*orn 4 android unit-testing kotlin kotlin-coroutines

TestScope有人可以提供使用新功能并TestScope.launch同时使用协程进行测试的高级示例吗?

似乎在新kotlinx.coroutines.test版本中他们添加了一些TestScope对库的调用。此外,他们已经弃用了旧的TestCoroutineDispatcher并告知使用它TestScope.runTests,但是,他们没有添加太多关于如何使用它的文档。我能找到的就是这个

谁能给我提供一些在不同场景下使用的额外示例?

Isa*_*Lee 7

我还可以通过评论中提到的@Joffrey 来解决这个问题。您只需要runTest { }在测试代码中使用协程作用域即可。通过使用,您可以在块内runTest { }使用.TestScopethis

就我而言,viewModel 中有一个类似这样的流函数。它正在里面运行viewModelScope

    fun getFriendDataWithFlow() {
        viewModelScope.launch {
            repository.loadFriendsWithFlow()
            ...
        }
     }
Run Code Online (Sandbox Code Playgroud)

我应该在我的测试代码中对此进行测试,并且我像这样使用它。

   @ExperimentalCoroutinesApi
   @Before
   fun setup() {
       Dispatchers.setMain(StandardTestDispatcher())
   }

   @ExperimentalCoroutinesApi
   @Test
   fun temp() {
        runTest {
            viewModel.getFriendDataWithFlow()
        }
   }
Run Code Online (Sandbox Code Playgroud)

我所做的只是添加runTest { }块,并在块内添加协程代码。这对我有用。我的测试协程依赖项是"org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.0-RC".