Тестовый файл Java работает, когда я запускаю Junit Test, а не приложение Java - PullRequest
1 голос
/ 09 мая 2019

У меня есть один файл класса java, в котором я написал свои коды, и один тестовый файл, где я тестирую свой код.

Я сгенерировал свои тестовые примеры с помощью генератора тестов Eclipse и написал свои коды с помощью @Test. Когда я запускаю эти коды с JUnit Test, все работает, но я хочу экспортировать как jar и выполнить его. Итак, мне нужен основной внутри тестового класса. Я искал в Google и StackOverflow

public static void main(String[] args) {
        JUnitCore jCore = new JUnitCore();
        jCore.run(StackTest.class);
        System.out.println("In main method");
    }

Другой подход;

public class testRunner {
    public static void main(String[] args) {
        Result result = JUnitCore.runClasses(AllTests.class);
        for (Failure failure : result.getFailures()) {
            System.out.println(failure.toString());
        }
    }
}

или

public static void main(String args[]) {

 TestRunner.runAndWait(new TestSuite(StackTest.class));

JUnitCore runner = new JUnitCore();
TextListener tl = new TextListener(new RealSystem());
runner.addListener(tl);
runner.run(StackTest.class);
// If above doesn't work, comment everything including imports and uncomment the following
org.junit.runner.JUnitCore.main("StackTest");
   }

Как эти решения, но у меня ничего не получалось. Как я могу сделать исполняемые тесты для Java-приложения не запущенными как JUnit? Потому что я хочу экспортировать тест в банку и выполнить его снаружи.

Мои ошибки обычно, как показано ниже:

JUnit version 4.12 .E Время: 0,005 Произошел 1 сбой: 1) initializationError (StackTest) java.lang.Exception: не запускается методы в org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods (BlockJUnit4ClassRunner.java:191) в org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors (BlockJUnit4ClassRunner.java:128) в org.junit.runners.ParentRunner.validate (ParentRunner.java:416) в org.junit.runners.ParentRunner. (ParentRunner.java:84) в org.junit.runners.BlockJUnit4ClassRunner. (BlockJUnit4ClassRunner.java:65) в org.junit.internal.builders.JUnit4Builder.runnerForClass (JUnit4Builder.java:10) в org.junit.runners.model.RunnerBuilder.safeRunnerForClass (RunnerBuilder.java:59) в org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass (AllDefaultPossibilitiesBuilder.java:26) в org.junit.runner.Computer.getRunner (Computer.java:40) в org.junit.runner.Computer $ 1.runnerForClass (Computer.java:31) в org.junit.runners.model.RunnerBuilder.safeRunnerForClass (RunnerBuilder.java:59) в org.junit.runners.model.RunnerBuilder.runners (RunnerBuilder.java:101) в org.junit.runners.model.RunnerBuilder.runners (RunnerBuilder.java:87) в org.junit.runners.Suite. (Suite.java:81) в org.junit.runner.Computer.getSuite (Computer.java:28) в org.junit.runner.Request.classes (Request.java:75) в org.junit.runner.JUnitCommandLineParseResult.createRequest (JUnitCommandLineParseResult.java:118) в org.junit.runner.JUnitCore.runMain (JUnitCore.java:77) в org.junit.runner.JUnitCore.main (JUnitCore.java:36) в StackTest.main (StackTest.java:144)

FAILURES !!! Выполнено тестов: 1, сбоев: 1

1 Ответ

3 голосов
/ 09 мая 2019

Вам не хватает того факта, что для выполнения тестов вам нужна программа запуска тестов, точно так же, как вам нужен метод main для выполнения рабочего кода. Просто упаковав их в банку, ничего не происходит. JUnit 5 имеет концепцию Launcher, см. Документацию. https://junit.org/junit5/docs/current/user-guide/#launcher-api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...