Я использую JGiven с JUnit 5 и должен реализовать параметризованный тест, используя два CSV-файла в качестве источников. Первый файл CSV содержит фактический ввод, второй содержит ожидаемый вывод.
Используя документы, я получил что-то вроде этого:
@ExtendWith(JGivenExtension.class)
public class TestCase extends ScenarioTest<TGiven, TWhen, TThen> {
@ParameterizedTest
@ArgumentsSource(MyArgumentsProvider.class)
public void test_something(MyObject obj) {
given().the_input_from_file("input.csv");
when().doing_some_stuff_with_data_from_input_file();
then().the_result_should_match(obj);
}
}
MyArgumentsProvider
загружает второй CSV файл и анализирует объекты из него (MyObject
).
Теперь проблема в том, что для каждого аргумента obj
загружается / анализируется input.csv
. Чтобы избежать этого, я помещаю разбор input.csv
в метод @BeforeAll
и передаю необходимые объекты, сгенерированные из него, на стадию TGiven
через given().the_input_data(parsedListOfInputData).
Но теперь мне нужно предоставить это объекты на сцену TWhen
. Это не работает.
Между тем, я думаю, что это неправильный подход, но я не могу найти другое решение. Любые намеки, чтобы сделать эту работу? Thx