@Override public void testFailure(Failure failure) throws Exception { if (current == null) { // The test probably failed before it could start, ie in @BeforeClass current = new TestResult(); results.add(current); // must add it here since testFinished() never was called. current.name = "Before any test started, maybe in @BeforeClass?"; current.time = System.currentTimeMillis(); } if (failure.getException() instanceof AssertionError) { current.error = "Failure, " + failure.getMessage(); } else { current.error = "A " + failure.getException().getClass().getName() + " has been caught, " + failure.getMessage(); } current.trace = failure.getTrace(); for (StackTraceElement stackTraceElement : failure.getException().getStackTrace()) { if (stackTraceElement.getClassName().equals(className)) { current.sourceInfos = "In " + Play.classes.getApplicationClass(className).javaFile.relativePath() + ", line " + stackTraceElement.getLineNumber(); current.sourceCode = Play.classes.getApplicationClass(className).javaSource.split("\n")[stackTraceElement.getLineNumber() - 1]; current.sourceFile = Play.classes.getApplicationClass(className).javaFile.relativePath(); current.sourceLine = stackTraceElement.getLineNumber(); } } current.passed = false; results.passed = false; }
@SuppressWarnings("unchecked") public static TestResults run(String name) { TestResults testResults = new TestResults(); try { // Load test class Class testClass = Play.classloader.loadClass(name); initTest(testClass); TestResults pluginTestResults = Play.pluginCollection.runTest(testClass); if (pluginTestResults != null) { return pluginTestResults; } JUnitCore junit = new JUnitCore(); junit.addListener(new Listener(testClass.getName(), testResults)); junit.run(testClass); } catch (ClassNotFoundException e) { Logger.error(e, "Test not found %s", name); } return testResults; }
@Override public void testFinished(Description description) throws Exception { current.time = System.currentTimeMillis() - current.time; results.add(current); } }