public TestResult execute(Class<?> testClass, String methodName) { TestResult testResult; ExpectedExceptionHolder exceptionHolder = new ExpectedExceptionHolder(); try { JUnitCore runner = new JUnitCore(); runner.addListener(exceptionHolder); for (RunListener listener : getRunListeners()) runner.addListener(listener); Result result = runner.run(Request.method(testClass, methodName)); if (result.getFailureCount() > 0) { testResult = TestResult.failed(exceptionHolder.getException()); } else if (result.getIgnoreCount() > 0) { testResult = TestResult.skipped(); // Will this ever happen incontainer? } else { testResult = TestResult.passed(); } if (testResult.getThrowable() == null) { testResult.setThrowable(exceptionHolder.getException()); } } catch (Throwable th) { testResult = TestResult.failed(th); } if (testResult.getThrowable() instanceof AssumptionViolatedException) { testResult = TestResult.skipped(testResult.getThrowable()); } testResult.setEnd(System.currentTimeMillis()); return testResult; }