1. ホーム
  2. android

[解決済み] コルーチンを使ったテストでのTestScopeの高度な使用例

2022-02-24 09:02:18

質問

どなたか、新しい TestScopeTestScope.launch コルーチンを使ったテスト中に?

のようですが、新しい kotlinx.coroutines.test というリリースが追加されました。 TestScope をライブラリに追加しました。また、古い TestCoroutineDispatcher を使用するように指示されています。 TestScope.runTests しかし、その使い方については、あまりドキュメントが追加されていませんでした。私が見つけたものはすべて これ .

どなたか、さまざまなシナリオでの使用例を教えていただけませんか?

どのように解決するのですか?

コメントで紹介されている @Joffrey さんの方法でも直せました。 を使用するだけです。 runTest { } を使うと、テストコードでコルーチンスコープを使用することができます。テストコードで runTest { } を使用することができます。 TestScope というブロックの中に this .

私の場合、viewModelにこのようなフロー関数がありました。の中で動いていました。 viewModelScope .

    fun getFriendDataWithFlow() {
        viewModelScope.launch {
            repository.loadFriendsWithFlow()
            ...
        }
     }

そして、私のテストコードでこれをテストする必要があり、私はこのように使用しました。

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

   @ExperimentalCoroutinesApi
   @Test
   fun temp() {
        runTest {
            viewModel.getFriendDataWithFlow()
        }
   }

を追加しただけです。 runTest { } ブロックの中にコルーチンのコードを追加してください。そして、それは私のために動作しました。 私のテスト用コルーチンの依存関係は "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.0-RC" .