Как программно запустить тест и при этом передать необходимые параметры?

Я новичок в 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));
    }
}

Ответы (0 шт):