そのため、さまざまな Web サイトの特定のプロパティを評価するテストを実行しようとしています。実際の評価はペイ パー コール リソースによって処理されているため、リソースを生成する回数を最小限に抑えたいと考えています。また、これを JUnit で実行して、より大きな自動テスト スイートに適合させる必要があります。
これまでパラメータ化されたテストでこれを行ってきましたが、テスト メソッドごとに新しいインスタンスをインスタンス化することを知りました。
現在、テスト クラスのコンストラクターに供給されるパラメーターごとに 1 回だけリソースを作成する方法を見つけようとしています。@BeforeClass は 1 回だけ実行し、@Before は各テストの前に 1 回実行します。
私が見つけることができたすべてのヘルプ トピックは、すべてのテストに対して 1 回だけ高価なリソースを作成することを扱っていましたが、この場合、新しいパラメーター セットごとにリソースを再作成する必要があります。
私が探しているものをよりよく示すために、以下にいくつかのサンプルコード/出力を書きました:
@RunWith(Parameterized.class)
public class MyTestClass {
private static Resource expensiveToCreateResource;
public MyTestClass(String url) {
System.out.println("Constructing resource for " + url);
expensiveToCreateResource = new Resource(url); //This is getting created 4x, which is wrong
}
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {{"url1"},{"url2"}});
}
@Test
public test1() {
expensiveToCreateResource.method1();
System.out.println("test1");
}
@Test
public test2() {
expensiveToCreateResource.method2();
System.out.println("test2");
}
}
出力が生成されます:
Constructing resource for url1
test1
test2
Constructing resource for url2
test1
test2
アイデア/解決策はありますか?ありがとう。