1

I'm trying to run karate test using the TestRunner main method for JUnit 5 but could not run.

import static org.junit.jupiter.api.Assertions.assertEquals;
import com.intuit.karate.Results;
import com.intuit.karate.Runner;
import org.junit.jupiter.api.Test;
import org.junit.runner.JUnitCore;

public class TestRunner {
    public static void main(String[] args) {
        JUnitCore.main(TestRunner.class.getCanonicalName());
    }
    @Test
    void testParallel() {
        Results results = Runner.parallel(TestRunner.class, 5);
        assertEquals(0, results.getFailCount(), results.getErrorMessages());
    }
}

JUnit version 4.13 .E Time: 0.015 There was 1 failure:

  1. initializationError(com.walmart.drs.services.sds.TestRunner) org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.walmart.drs.services.sds.TestRunner':
  1. No runnable methods at org.junit.runners.ParentRunner.validate(ParentRunner.java:525) at org.junit.runners.ParentRunner.(ParentRunner.java:102) at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:84) at org.junit.runners.JUnit4.(JUnit4.java:23) at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37) at org.junit.runner.Computer.getRunner(Computer.java:50) at org.junit.runner.Computer$1.runnerForClass(Computer.java:31) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:125) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:111) at org.junit.runners.Suite.(Suite.java:81) at org.junit.runner.Computer$2.(Computer.java:33) at org.junit.runner.Computer.getSuite(Computer.java:28) at org.junit.runner.Request.classes(Request.java:77) at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116) at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77) at org.junit.runner.JUnitCore.main(JUnitCore.java:36) at com.walmart.drs.services.sds.TestRunner.main(TestRunner.java:14) FAILURES!!! Tests run: 1, Failures: 1
SeverityOne
  • 2,476
  • 12
  • 25
  • I even want to call the Runner inside main method, but it seems like it is not supporting and also I do not found any reason why it is not suported. – Shashi Ranjan Jun 23 '22 at 10:50

1 Answers1

0

I don't understand what you are trying to do and please assume it is not supported.

Please use the Runner class as described in the documentation: https://github.com/intuit/karate#junit-5-parallel-execution

Actually the Runner does not depends on JUnit at all - so if you want to put this code inside a main() method, you can do that, and omit the assert() if needed.

import com.intuit.karate.Results;
import com.intuit.karate.Runner;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

class TestParallel {

    @Test
    void testParallel() {
        Results results = Runner.path("classpath:animals").tags("~@ignore").parallel(5);
        assertEquals(0, results.getFailCount(), results.getErrorMessages());
    }

}

And if you are not already, please migrate to 1.0.0 - we won't be supporting old versions: https://github.com/intuit/karate/wiki/1.0-upgrade-guide

Peter Thomas
  • 54,465
  • 21
  • 84
  • 248