1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 package org.openoffice.test.common; 22 23 import java.io.File; 24 import java.util.Map.Entry; 25 import java.util.Set; 26 27 import org.junit.Ignore; 28 import org.junit.runner.Description; 29 import org.junit.runner.Result; 30 import org.junit.runner.notification.Failure; 31 import org.junit.runner.notification.RunListener; 32 33 public class CSVReporter extends RunListener { 34 35 private File reportDir = Testspace.getFile("output/result"); 36 37 private File file = null; 38 39 private String testClassName = null; 40 41 private long suiteStart = 0; 42 43 private long failures = 0; 44 45 private long errors = 0; 46 47 private long tests = 0; 48 49 private long ignored = 0; 50 51 private long testStart = 0; 52 53 @Override testStarted(Description description)54 public void testStarted(Description description) throws Exception { 55 System.out.println("testStarted"); 56 if (!description.getClassName().equals(testClassName)) { 57 finishSuite(); 58 startSuite(description); 59 } 60 61 62 } 63 64 @Override testAssumptionFailure(Failure failure)65 public void testAssumptionFailure(Failure failure) { 66 67 } 68 69 @Override testFailure(Failure failure)70 public void testFailure(Failure failure) throws Exception { 71 System.out.println("testFailure"); 72 if (failure.getException() instanceof AssertionError) { 73 failures++; 74 } else { 75 errors++; 76 } 77 } 78 79 @Override testFinished(Description description)80 public void testFinished(Description description) throws Exception { 81 System.out.println("testFinished"); 82 tests++; 83 } 84 85 @Override testIgnored(Description description)86 public void testIgnored(Description description) throws Exception { 87 testStarted(description); 88 System.out.println("testIgnored"); 89 ignored++; 90 Ignore ignore = description.getAnnotation(Ignore.class); 91 testFinished(description); 92 } 93 94 @Override testRunFinished(Result result)95 public void testRunFinished(Result result) throws Exception { 96 System.out.println("testRunFinished"); 97 finishSuite(); 98 } 99 100 @Override testRunStarted(Description description)101 public void testRunStarted(Description description) throws Exception { 102 System.out.println("testRunStarted"); 103 } 104 startSuite(Description description)105 private void startSuite(Description description) { 106 testClassName = description.getClassName(); 107 suiteStart = System.currentTimeMillis(); 108 failures = 0; 109 errors = 0; 110 tests = 0; 111 ignored = 0; 112 113 file = new File(reportDir, testClassName + ".csv"); 114 } 115 finishSuite()116 private void finishSuite() { 117 if (testClassName == null) 118 return; 119 120 121 Set<Entry<Object, Object>> entries = System.getProperties().entrySet(); 122 for (Entry<Object, Object> e : entries) { 123 // Element prop = doc.createElement("property"); 124 // prop.setAttribute("name", "" + e.getKey()); 125 // prop.setAttribute("value", "" + e.getValue()); 126 // props.appendChild(prop); 127 } 128 129 store(); 130 } 131 store()132 private void store() { 133 134 } 135 136 } 137