Как программно запустить тест и при этом передать необходимые параметры?
Я новичок в JUnit. Задача заключаемся в том, что я программно вызываю тесты как для примеров из https://translated.turbopages.org/proxy_u/en-ru.ru.53b1d3e6-63989438-ec8c6edd-74722d776562/https/www.baeldung.com/junit-tests-run-programmatically-from-java
Однако не могу найти решения для поставленной задачи, что помимо того что я вызываю программно тест, мне в него нужно передать необходимые параметры, которые я определяю до вызова теста.
Искала решение в параметризированных тестах, но не смогла добиться нужного результата Подскажите, такое вообще выполнимо?
решение пыталась создать используя https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests-sources-ArgumentsSource
HelloApplication.java
public class HelloApplication implements ArgumentsProvider {
long n;
public static void main(String[] args) {
n = 4L;
RunJUnit5TestsFromJava runJUnit5TestsFromJava = new RunJUnit5TestsFromJava();
runJUnit5TestsFromJava.runOne();
TestExecutionSummary summary = runner.listener.getSummary();
summary.printTo(new PrintWriter(System.out));
}
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception {
return Stream.of(Arguments.of(n));
}
}
RunJUnit5TestsFromJava.java
public class RunJUnit5TestsFromJava {
SummaryGeneratingListener listener = new SummaryGeneratingListener();
public void runOne() {
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(MyClass5Test.class))
.build();
Launcher launcher = LauncherFactory.create();
TestPlan testPlan = launcher.discover(request);
launcher.registerTestExecutionListeners(listener);
launcher.execute(request);
}
}
MyClass5Test.java
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MyClass5Test {
@ParameterizedTest
@ArgumentsSource(HelloApplication.class)
public void sumTest(long n ) {
MyClass myClass = new MyClass();
assertEquals(5, (int)n+myClass.sum(1));
}
}