use of org.kanonizo.junit.KanonizoTestResult in project kanonizo by kanonizo.
the class JUnit4TestRunner method runTest.
@Override
public KanonizoTestResult runTest(TestCase tc) {
Request request = getRequest(tc);
Runner testRunner = request.getRunner();
Result testResult = runner.run(testRunner);
List<KanonizoTestFailure> failures = testResult.getFailures().stream().map(failure -> new KanonizoTestFailure(failure.getException(), failure.getTrace())).collect(Collectors.toList());
return new KanonizoTestResult(tc.getTestClass(), tc.getMethod(), testResult.wasSuccessful(), failures, testResult.getRunTime());
}
use of org.kanonizo.junit.KanonizoTestResult in project kanonizo by kanonizo.
the class TestCase method run.
/**
* Executes a single test method on the JUnitCore class, using default
* Runners and configuration. This method must reload the class from the
* class loader as it will have been instrumented since it is first created.
* If the instrumented version is not loaded, code coverage goes a little
* bit funky.
*
* @throws ClassNotFoundException if the ClassLoader can't find the {@link #testClass} by name
*/
public void run() {
long startTime = System.currentTimeMillis();
// reload testclass from memory class loader to get the instrumented
// version
Task timerTask = new TestCaseExecutionTimer(testClass.getName(), testMethod.getName());
if (InstrumentationProperties.LOG) {
TaskTimer.taskStart(timerTask);
}
File rootFolder;
if (EXECUTE_IN_ROOT_FOLDER && (rootFolder = Framework.getInstance().getRootFolder()) != null) {
System.setProperty("user.dir", rootFolder.getAbsolutePath());
}
KanonizoTestRunner testCaseRunner = TestingUtils.isJUnit4Class(testClass) ? new JUnit4TestRunner() : new JUnit3TestRunner();
KanonizoTestResult result = null;
if (USE_TIMEOUT) {
ExecutorService service = Executors.newSingleThreadExecutor();
Future<KanonizoTestResult> res = service.submit(() -> testCaseRunner.runTest(this));
try {
result = res.get(TIMEOUT, UNIT);
} catch (TimeoutException e) {
logger.debug("Test " + testMethod.getName() + " timed out.");
return;
} catch (InterruptedException e) {
logger.error(e);
} catch (ExecutionException e) {
logger.error(e);
}
} else {
result = testCaseRunner.runTest(this);
}
setResult(result);
if (InstrumentationProperties.LOG) {
TaskTimer.taskEnd(timerTask);
}
}
use of org.kanonizo.junit.KanonizoTestResult in project kanonizo by kanonizo.
the class JUnit3TestRunner method runTest.
@Override
public KanonizoTestResult runTest(TestCase tc) {
Test test = createMethodSuite(tc.getTestClass(), tc.getMethod());
if (test == null) {
logger.error("Unable to create test case");
throw new RuntimeException();
}
long startTime = System.currentTimeMillis();
TestResult result = doRun(test, false);
long runTime = System.currentTimeMillis() - startTime;
List<KanonizoTestFailure> failures = new ArrayList<>();
Enumeration<TestFailure> testFailures = result.failures();
Enumeration<TestFailure> errors = result.errors();
List<TestFailure> allErrors = Util.combine(testFailures, errors);
for (TestFailure f : allErrors) {
failures.add(new KanonizoTestFailure(f.thrownException(), f.trace()));
}
return new KanonizoTestResult(tc.getTestClass(), tc.getMethod(), result.wasSuccessful(), failures, runTime);
}
Aggregations