2

彼ら:

私はアプリケーションに取り組んでおり、単体テストでそれを構築しています。

ただし、現在、非同期呼び出しをテストする必要がある状況にあります。例えば、

- (void)testUserInfoBecomesValidWhenUserIsBuiltSuccessfully
{
    if ( ![userBuilder userInfoUpToDate] )
    {
        [userBuilder buildUser];
    }

    STAssertTrue([userBuilder userInfoUpToDate], @"User information is not valid before building the user");
}

そのようなことをテストするための一般的な方法は何ですか?userInfoUpToDateは、非同期で更新されることが期待されています。

ありがとう!ウィリアム

4

2 に答える 2

4

単体テストを使用して通常はテストしないものをテストしたくなることがあります。これは基本的に、誤解とすべてをテストしたいという欲求から来ています。そして、単体テストでテストする方法がわからないことに気付きます。

ここで何をテストするのですか?

リクエストが完了するまでデータが利用できないことをテストしますか?

次に、リクエストの完了後にデータが利用可能であることを確認する非非同期バージョンのテストを作成できます。

リクエスト後にレスポンスが正しく保存されたことをテストしますか?

ロジックでフラグを使用してテストすることもできます。

非同期テストを実行しなくても、すべてのロジック テストを実行できます。

ですから、最後に、なぜ非同期呼び出しをテストする必要があると思いますか?

単体テストは迅速に実行されるはずなので、非同期呼び出しをテストしないもう 1 つの理由と考えてください。これらのテストを実行する継続的インテグレーション システムを想像してみてください。余分な時間が必要になります。

そして、別の回答に対するコメントを読んでください-テストで非同期を使用することはまったく一般的ではないと思います。たとえば、TDD ブックの Kent Beck です。並行ユニットテストは可能ですが、非常にまれなケースであると述べました。

では、何を、なぜ本当にテストしたいのでしょうか?

于 2013-03-27T19:54:49.183 に答える