/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.sparql.junit;
import java.io.PrintStream ;
import java.util.Enumeration ;
import junit.framework.AssertionFailedError ;
import junit.framework.Test ;
import junit.framework.TestCase ;
import junit.framework.TestFailure ;
import junit.framework.TestListener ;
import junit.framework.TestResult ;
import junit.runner.BaseTestRunner ;
/** Simple, text output, test runner */
public class SimpleTestRunner extends BaseTestRunner
{
public SimpleTestRunner()
{
super();
}
@Override
public void testStarted(String arg0) { }
@Override
public void testEnded(String arg0) { }
@Override
public void testFailed(int arg0, Test test, Throwable t) {}
@Override
protected void runFailed(String arg0) { }
static public TestResult runSilent(Test ts)
{
TestResult result = new TestResult() ;
result.addListener(new SilentListener()) ;
ts.run(result) ;
return result ;
}
static public TestResult runNoReport(Test ts)
{
TestResult result = new TestResult() ;
//result.addListener(new SilentListener()) ;
result.addListener(new Listener()) ;
ts.run(result) ;
return result ;
}
static public void runAndReport(Test ts) { runAndReport(ts, null) ; }
static public void runAndReport(Test ts, PrintStream out)
{
if ( out == null )
out = System.out ;
TestResult result = runNoReport(ts) ;
if ( result.errorCount() > 0 || result.failureCount() > 0 )
{
out.println() ;
out.println("===========================================") ;
}
int goodCount = result.runCount() - result.errorCount() - result.failureCount() ;
out.println("Tests = "+result.runCount()+
" : Successes = "+goodCount+
" : Errors = "+result.errorCount()+
" : Failures = "+result.failureCount()) ;
for ( Enumeration<?> e = result.errors() ; e.hasMoreElements() ; )
{
out.println() ;
TestFailure failure = (TestFailure)e.nextElement() ;
out.println("Error: "+failure.toString()) ;
}
for ( Enumeration<?> e = result.failures() ; e.hasMoreElements() ; )
{
out.println() ;
TestFailure failure = (TestFailure)e.nextElement() ;
out.println("Failure: "+failure.toString()) ;
}
}
static class Listener implements TestListener
{
Listener() {}
@Override
public void addError(Test test, Throwable arg1)
{
System.out.println("** Error: "+test) ;
if ( arg1 != null )
{
if ( arg1.getMessage() != null )
System.out.println(" "+arg1.getMessage()) ;
StackTraceElement st = arg1.getStackTrace()[0] ;
System.out.println(st) ;
}
}
@Override
public void addFailure(Test test, AssertionFailedError arg1)
{
System.out.println("** Failure: "+test);
if ( arg1 != null )
{
if ( arg1.getMessage() != null )
System.out.println(" "+arg1.getMessage()) ;
StackTraceElement st = arg1.getStackTrace()[0] ;
System.out.println(st) ;
}
}
@Override
public void endTest(Test test) { }
@Override
public void startTest(Test test)
{
// Compensate for TestCase.toString() adding "(class)" to the end of the name
String name = "" ;
if ( test instanceof TestCase )
name = ((TestCase)test).getName() ;
else
name = test.toString() ;
System.out.println("Test: "+name) ; }
}
static class SilentListener implements TestListener
{
SilentListener() {}
@Override
public void addError(Test test, Throwable arg1) {}
@Override
public void addFailure(Test test, AssertionFailedError arg1) {}
@Override
public void endTest(Test test) { }
@Override
public void startTest(Test test) { }
}
}