質問

TestCase オブジェクトの新しい(または異なる)インスタンスは、JUnitテストケースの各テストメソッドの実行に使用されますか?または、1つのインスタンスがすべてのテストに再利用されますか?

public class MyTest extends TestCase {
  public void testSomething() { ... }
  public void testSomethingElse() { ... }
}

このテストの実行中に、 MyTest クラスのインスタンスがいくつ作成されますか?

可能であれば、動作を確認できるドキュメントまたはソースコードへのリンクを提供します。

役に立ちましたか?

解決

あなたの質問についてJUnitドキュメントで明確な答えを見つけることができませんでしたが、anjanbが書いたように、各テストは他のテストから独立しているため、各テストに対して新しいTestCaseインスタンスを作成できます実行します。

テストクラスのすべてのテストケースで共有したい高価なテストセットアップ(" フィクスチャ")がある場合は、 @BeforeClass この結果を達成するための静的メソッドの注釈: http://junit.sourceforge .net / javadoc_40 / org / junit / BeforeClass.html 。ただし、テストごとに新しいインスタンスが作成される場合がありますが、@ BeforeTestメソッドが初期化した静的データには影響しません。

他のヒント

はい、別のインスタンスが作成されます。

そのテストの実行中に、MyTestの2つのインスタンスが作成されます。

異なる動作が必要な場合、TestNG( http://testng.orgと呼ばれる同様のツールを使用することが1つのオプションです/ doc / )。

テストの実行ごとに1つのインスタンスがあります。お試しください

public class MyTest extends TestCase {
  public MyTest() { System.out.println("MyTest Constructor");
  public void setUp() { System.out.println("MyTest setUp");
  public void tearDown() { System.out.println("MyTest tearDown");
  public void testSomething() { System.out.println("MyTest testSomething");
  public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}

ソースコード(新しいバージョンへのコードを含む-私の例はJunit 3)は http:// wwwにあります。 junit.org

コンストラクタでデータが初期化および再初期化されることを懸念しているため、これを要求する場合、テストケースデータを初期化するための規定の方法はsetUp()およびtearDown()のみを使用することに注意してください。

はい、間違いなく。この設計により、インスタンス変数に保存したデータにテスト間でアクセスできないことがわかりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top