0

アプリケーションを単体テストするためのTestClassを作成しています。実行したいことのひとつは、テストメソッドを実行し、メソッドが正しく実行されたことを確認し、結果に基づいてテストクラス内のクラスプロパティに値を格納し、それを使用することです。後のメソッドの値。

これを試してみたところ、コンパイラがあるメソッドから別のメソッドに移動するとすぐに、設定したすべてのプロパティが完全に消去されることがわかりました。ブレークポイントでチェックしました。最初のメソッドの最後に値がプロパティにあり、2番目のメソッドの最初に同じプロパティがnullになっています。

これを調べたところ、他の誰も同じことを試みていないようです。メソッド間で値を共有することは可能ですか、それとも間違ったアプローチを取っていますか?

前もって感謝します。

4

3 に答える 3

5

あなたは間違ったアプローチを取っています。

ユニットテストは、定義上、完全に自己完結型で決定論的である必要があります。それらは互いに依存すべきではありません。

最初の単体テストの繰り返し部分を、他の単体テストで呼び出すことができるヘルパーメソッドにリファクタリングできるはずです。作業は2回行われますが、単体テストは非常に高速である必要があるため、オーバーヘッドは非常に最小限に抑えられます。

于 2012-07-31T16:45:42.803 に答える
2

これはコンパイラではありません。テストごとに新しいインスタンスを(潜在的に)作成するのはテストランナーです。

テストは一般的に独立している必要があります-これを機能させる方法を見つけられたとしても、そうすることは避けます。あなたができる限りそれの周りにあなたの方法を設計してください。

于 2012-07-31T16:44:30.900 に答える
1

使用しているテストフレームワークに関係なく、これは私には悪い習慣のように聞こえます。すべての自動テスト(正式な単体テストは言うまでもなく)は、互いに独立している必要があります。静的フィールド/プロパティは機能する可能性がありますが、最初にテストをリファクタリングすることをお勧めします。

于 2012-07-31T16:46:29.507 に答える