2

コードの単体テストケースを書き始めました。この記事を書いているときに、多くのテスト ケース クラスが共通のコードを使用しており、クラス間で共通の変数が必要であることに気付きました。

そこで、これらすべての値を保持するシングルトン クラスを作成することにしました。このシングルトン クラスは sendesting で継承されます。

ここで私の質問は、シングルトン テスト クラスを作成することは可能です。?

注:シングルトンを作成しましたが、まったく機能していません。

4

2 に答える 2

1

OCUnit は、他の xUnit フレームワークと同じアーキテクチャを共有しています。テスト ケースを実行するには、

  1. テスト ケース オブジェクトをインスタンス化します。(これは通常「テスト フィクスチャ」と呼ばれ、フィクスチャには複数のテストで役立つ他のオブジェクトの ivar があります。)
  2. コール設定
  3. 1 つの特定のテスト メソッドを実行します
  4. ティアダウンを呼び出します

必要な共通変数については、ivar として定義します。次に、で初期化し-setUpます。後で明示的なクリーンアップが必要な場合は、 で行い-tearDownます。

テスト間でオブジェクトを共有しないようにすることは非常に重要です。各テストは、それ自体で一貫した成功/失敗の動作を持つ必要があるためです。オブジェクトを共有すると、これが汚染され、テスト間の潜在的な依存関係が作成されます。シングルトンはオブジェクトを共有する一般的な方法であるため、通常、単体テスト戦略に反します。

Objective-C または Swift を使用した Xcode での単体テスト (特にテスト駆動開発) の段階的な例については、https: //qualitycoding.org/tdd-kata/ を参照してください。

于 2012-07-20T01:14:38.147 に答える
0

はい、ここで、sentesting を継承するシングルトン クラスを作成できないことがわかりました。

NSObject を継承するシングルトンのみ作成できます。

于 2012-07-19T07:03:24.717 に答える