SLING-1697 Improve logging of single test cases to the logger and to stdout

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@993119 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java b/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
index 48774af..658b3fb 100644
--- a/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
+++ b/src/test/java/org/apache/sling/launchpad/testing/LoggingSuite.java
@@ -5,9 +5,9 @@
  * 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
@@ -21,9 +21,9 @@
  * 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
@@ -43,23 +43,50 @@
 
 /**
  * Simple TestSuite subclass which logs when each test is starting.
- * 
  */
 class LoggingSuite extends TestSuite {
 
     private Logger logger;
 
+    private int lastRuns;
+
+    private int lastErrors;
+
+    private int lastFailures;
+
     LoggingSuite(Set<Class<TestCase>> classSet, String name, Logger logger) {
         super(classSet.toArray(new Class[classSet.size()]), name);
         this.logger = logger;
     }
 
     @Override
+    public void run(TestResult result) {
+        // result.addListener(new SlingTestListener());
+        super.run(result);
+    }
+
+    @Override
     public void runTest(Test test, TestResult result) {
-        if (test instanceof TestSuite) {
-            logger.info("Starting test run for class " + ((TestSuite) test).getName());
-        }
+        final String name = (test instanceof TestSuite)
+                ? ((TestSuite) test).getName()
+                : test.getClass().getName();
+        final String startMessage = String.format("Running %s", name);
+        System.out.println(startMessage);
+        logger.info(startMessage);
+
         super.runTest(test, result);
+
+        final String endMessage = String.format(
+            "Tests run: %d, Failures: %d, Errors: %d, Skipped: %d",
+            result.runCount() - lastRuns, result.failureCount() - lastFailures,
+            result.errorCount() - lastErrors,
+            test.countTestCases() - result.runCount() + lastRuns);
+        System.out.println(endMessage);
+        logger.info(endMessage);
+
+        lastRuns = result.runCount();
+        lastFailures = result.failureCount();
+        lastErrors = result.errorCount();
     }
 
 }