Поэтому я пытаюсь запустить тесты, которые будут оценивать определенные свойства разных веб-сайтов. Фактическая оценка выполняется ресурсом с оплатой за вызов, поэтому я хочу свести к минимуму количество раз, когда я генерирую ресурс. Кроме того, мне нужно, чтобы это работало в JUnit, чтобы вписаться в более крупный набор автоматизированных тестов.
До сих пор я делал это с параметризованными тестами, но только что узнал, что они создают новый экземпляр для каждого метода тестирования.
Теперь я пытаюсь найти способ создать ресурс только один раз для каждого параметра, который передается в конструктор моего тестового класса. @BeforeClass делает это только один раз, а @Before делает это один раз перед каждым тестом.
Все разделы справки, которые мне удалось найти, касались создания дорогостоящих ресурсов один раз для всех тестов, но в этом случае мне нужно, чтобы ресурс создавался заново для каждого нового набора параметров.
Я написал пример кода/вывода ниже, чтобы лучше показать, что я ищу:
@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
Есть идеи/решения? Спасибо.