6

テストメソッドの名前が他のテストに影響を与える可能性があるのはなぜですか?

2つのクラスのテストを含むスイートがあり、class1のメソッド名を変更すると、class2のテストは正常(緑色)になります。

両方のクラスに同じ名前のメソッドがあることに気付きましたが、失敗しているテストはどちらでもありません。ただし、それらのいずれかの名前を変更すると、すべてのテストに問題はありません。

異なるクラスに同じ名前の2つのメソッドがあり、同じスイートにあることは問題ありませんか?そして、別のテストがランダムに失敗するという事実は単なる偶然ですか?

ps:メソッドの名前を変更すると、実行されるテストの順序が変更されます。ps2:英語が下手でごめんなさい。

その写真は私の質問をよりよく説明することができます: ここに画像の説明を入力してください

4

1 に答える 1

7

JUnitにはバグはありません!私たちのチームも同様の結果を経験しましたが、これは不適切なリソース管理が原因です。失敗したテストの名前を変更して、最初に実行されるようにすることができます。これで緑色に変わるはずです。これは主に、テスト間でリソースが誤って共有されていることを示しています。その場合、ティアダウン()でリソースを解放してみることができます@After。原因を見つけるための小さなチェックリストは次のとおりです。

  • テストに耐えるスレッドはありますか?
  • すべてのエグゼキュータはシャットダウンして終了しますか?
  • テスト後もファイルまたはストリームは開いていますか?
  • テストクラスのすべてのフィールドは、テスト後にクリア/再初期化されていますか?
  • 静的参照またはシングルトンの使用は避けてください
  • テストメソッドでリソースを解放しないでください。ティアダウンメソッドでのみ解放してください。そうしないと、例外によってこのコードが到達不能になる可能性があります。
于 2013-03-05T20:50:51.807 に答える