Author: julien(a)jboss.com
Date: 2007-10-13 16:33:24 -0400 (Sat, 13 Oct 2007)
New Revision: 8635
Added:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/EventList.java
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/DelegateRunnerEventFilter.java
Modified:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/AbstractTestRunnerTests.java
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/GenericTestRunnerTests.java
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/POJOTestRunnerTests.java
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/TestDriverRunnerTests.java
modules/test/trunk/unit/src/main/org/jboss/unit/TestId.java
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/generic/GenericTestRunner.java
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/pojo/POJOTestRunner.java
Log:
implement the modification of test ids when a runner delegates to another runner.
Previously test event did not have correct test ids when they were broadcasted to the top
level listeners such as reporters
Modified:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/AbstractTestRunnerTests.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/AbstractTestRunnerTests.java 2007-10-13
19:26:25 UTC (rev 8634)
+++
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/AbstractTestRunnerTests.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -51,18 +51,6 @@
public class AbstractTestRunnerTests
{
- protected static class EventList implements TestRunnerEventListener
- {
-
- /** . */
- protected final List<TestRunnerEvent> events = new
ArrayList<TestRunnerEvent>();
-
- public void onEvent(TestRunnerEvent event)
- {
- events.add(event);
- }
- }
-
protected static class TestDriverImpl extends AbstractTestDriver
{
@@ -95,39 +83,4 @@
assertEquals(ids, this.ids);
}
}
-
- protected static void assertStartRunnerEvent(TestRunnerEvent event)
- {
- assertInstanceOf(event, StartRunnerEvent.class);
- }
-
- protected static void assertStartTestEvent(TestRunnerEvent event, TestId
expectedTestId)
- {
- StartTestEvent startEvent = assertInstanceOf(event, StartTestEvent.class);
- assertEquals(expectedTestId, startEvent.getTestId());
- }
-
- protected static void assertEndTestEvent(TestRunnerEvent event, TestId expectedTestId,
TestResult expectedTestResult)
- {
- EndTestEvent endEvent = assertInstanceOf(event, EndTestEvent.class);
- assertEquals(expectedTestId, endEvent.getTestId());
-
- //
- TestResult testResult = endEvent.getTestResult();
- if (expectedTestResult instanceof TestFailure)
- {
- TestFailure expectedTestFailure = (TestFailure)expectedTestResult;
- TestFailure testFailure = assertInstanceOf(testResult, TestFailure.class);
- assertEquals(expectedTestFailure.getFailure().getType(),
testFailure.getFailure().getType());
- }
- else if (expectedTestResult instanceof TestSuccess)
- {
- assertInstanceOf(testResult, TestSuccess.class);
- }
- }
-
- protected static void assertEndRunnerEvent(TestRunnerEvent event)
- {
- assertInstanceOf(event, EndRunnerEvent.class);
- }
}
Added: modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/EventList.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/EventList.java
(rev 0)
+++ modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/EventList.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -0,0 +1,117 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.test.unit.runner;
+
+import org.jboss.unit.runner.TestRunnerEvent;
+import org.jboss.unit.runner.TestRunnerEventListener;
+import org.jboss.unit.runner.TestResult;
+import org.jboss.unit.runner.results.TestFailure;
+import org.jboss.unit.runner.results.TestSuccess;
+import org.jboss.unit.runner.event.StartRunnerEvent;
+import org.jboss.unit.runner.event.StartTestEvent;
+import org.jboss.unit.runner.event.EndTestEvent;
+import org.jboss.unit.runner.event.EndRunnerEvent;
+import static org.jboss.unit.api.Assert.*;
+import org.jboss.unit.TestId;
+
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class EventList implements TestRunnerEventListener
+{
+
+ /** . */
+ protected final List<TestRunnerEvent> events = new
ArrayList<TestRunnerEvent>();
+
+ public void onEvent(TestRunnerEvent event)
+ {
+ events.add(event);
+ }
+
+ protected StartRunnerEvent assertStartRunnerEvent(int index)
+ {
+ assertTrue(events.size() > index);
+ TestRunnerEvent event = assertNotNull(events.get(index));
+ return assertStartRunnerEvent(event);
+ }
+
+ protected StartTestEvent assertStartTestEvent(int index, TestId expectedTestId)
+ {
+ assertTrue(events.size() > index);
+ TestRunnerEvent event = assertNotNull(events.get(index));
+ return assertStartTestEvent(event, expectedTestId);
+ }
+
+ protected EndTestEvent assertEndTestEvent(int index, TestId expectedTestId, TestResult
expectedTestResult)
+ {
+ assertTrue(events.size() > index);
+ TestRunnerEvent event = assertNotNull(events.get(index));
+ return assertEndTestEvent(event, expectedTestId, expectedTestResult);
+ }
+
+ protected EndRunnerEvent assertEndRunnerEvent(int index)
+ {
+ assertTrue(events.size() > index);
+ TestRunnerEvent event = assertNotNull(events.get(index));
+ return assertEndRunnerEvent(event);
+ }
+
+ protected static StartRunnerEvent assertStartRunnerEvent(TestRunnerEvent event)
+ {
+ return assertInstanceOf(event, StartRunnerEvent.class);
+ }
+
+ protected static StartTestEvent assertStartTestEvent(TestRunnerEvent event, TestId
expectedTestId)
+ {
+ StartTestEvent startEvent = assertInstanceOf(event, StartTestEvent.class);
+ assertEquals(expectedTestId, startEvent.getTestId());
+ return startEvent;
+ }
+
+ protected static EndTestEvent assertEndTestEvent(TestRunnerEvent event, TestId
expectedTestId, TestResult expectedTestResult)
+ {
+ EndTestEvent endEvent = assertInstanceOf(event, EndTestEvent.class);
+ assertEquals(expectedTestId, endEvent.getTestId());
+ TestResult testResult = endEvent.getTestResult();
+ if (expectedTestResult instanceof TestFailure)
+ {
+ TestFailure expectedTestFailure = (TestFailure)expectedTestResult;
+ TestFailure testFailure = assertInstanceOf(testResult, TestFailure.class);
+ assertEquals(expectedTestFailure.getFailure().getType(),
testFailure.getFailure().getType());
+ }
+ else if (expectedTestResult instanceof TestSuccess)
+ {
+ assertInstanceOf(testResult, TestSuccess.class);
+ }
+ return endEvent;
+ }
+
+ protected static EndRunnerEvent assertEndRunnerEvent(TestRunnerEvent event)
+ {
+ return assertInstanceOf(event, EndRunnerEvent.class);
+ }
+}
Modified:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/GenericTestRunnerTests.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/GenericTestRunnerTests.java 2007-10-13
19:26:25 UTC (rev 8634)
+++
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/GenericTestRunnerTests.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -29,6 +29,7 @@
import org.jboss.unit.runner.model.ParametersDef;
import org.jboss.unit.runner.model.ParameterValueDef;
import org.jboss.unit.runner.ParametrizationSet;
+import org.jboss.unit.runner.results.TestSuccess;
import org.jboss.unit.driver.DriverResponse;
import org.jboss.unit.driver.DriverCommand;
import org.jboss.unit.driver.AbstractTestDriver;
@@ -77,8 +78,16 @@
ParametersDef fooParameters = new ParametersDef();
fooParameters.setParameter("abc", new ParameterValueDef("def",
"ghi"));
foo.setParameters(fooParameters);
+ EventList events = new EventList();
GenericTestRunner runner = new GenericTestRunner(suite);
- runner.run(new TestRunnerContextSupport());
+ runner.run(new TestRunnerContextSupport(events));
+ assertEquals(6, events.events.size());
+ events.assertStartRunnerEvent(0);
+ events.assertStartTestEvent(1, new TestId(Driver1.class.getName(),
"foo"));
+ events.assertEndTestEvent(2, new TestId(Driver1.class.getName(), "foo"),
new TestSuccess(0));
+ events.assertStartTestEvent(3, new TestId(Driver1.class.getName(),
"foo"));
+ events.assertEndTestEvent(4, new TestId(Driver1.class.getName(), "foo"),
new TestSuccess(0));
+ events.assertEndRunnerEvent(5);
assertEquals(list(new TestId("foo"), new TestId("foo")),
Driver1.ids);
HashMap<String, String> expectedParametrization1 = new HashMap<String,
String>();
HashMap<String, String> expectedParametrization2 = new HashMap<String,
String>();
@@ -99,10 +108,16 @@
ParametersDef fooParameters = new ParametersDef();
fooParameters.setParameter("abc", new ParameterValueDef("def",
"ghi"));
foo.setParameters(fooParameters);
- GenericTestRunner runner = new GenericTestRunner(suite);
Map<String,String[]> parametrizations = new HashMap<String,
String[]>();
parametrizations.put("abc", new String[]{"def"});
- runner.run(new TestRunnerContextSupport(new
ParametrizationSet(parametrizations)));
+ EventList events = new EventList();
+ GenericTestRunner runner = new GenericTestRunner(suite);
+ runner.run(new TestRunnerContextSupport(new ParametrizationSet(parametrizations),
events));
+ assertEquals(4, events.events.size());
+ events.assertStartRunnerEvent(0);
+ events.assertStartTestEvent(1, new TestId(Driver1.class.getName(),
"foo"));
+ events.assertEndTestEvent(2, new TestId(Driver1.class.getName(), "foo"),
new TestSuccess(0));
+ events.assertEndRunnerEvent(3);
assertEquals(list(new TestId("foo")), Driver1.ids);
HashMap<String, String> expectedParametrization1 = new HashMap<String,
String>();
expectedParametrization1.put("abc", "def");
@@ -113,8 +128,12 @@
{
Driver1.init();
GenericTestSuiteDef suite = new GenericTestSuiteDef(Driver1.class.getName());
+ EventList events = new EventList();
GenericTestRunner runner = new GenericTestRunner(suite);
- runner.run(new TestRunnerContextSupport());
+ runner.run(new TestRunnerContextSupport(events));
+ assertEquals(2, events.events.size());
+ events.assertStartRunnerEvent(0);
+ events.assertEndRunnerEvent(1);
assertEquals(list(), Driver1.ids);
assertEquals(list(), Driver1.parametrizations);
}
@@ -125,8 +144,14 @@
Driver1.testSuiteInfo.addTest(new SimpleTestCaseInfo("foo"));
GenericTestSuiteDef suite = new GenericTestSuiteDef(Driver1.class.getName());
suite.addTest(new TestDef(new TestId("foo")));
+ EventList events = new EventList();
GenericTestRunner runner = new GenericTestRunner(suite);
- runner.run(new TestRunnerContextSupport());
+ runner.run(new TestRunnerContextSupport(events));
+ assertEquals(4, events.events.size());
+ events.assertStartRunnerEvent(0);
+ events.assertStartTestEvent(1, new TestId(Driver1.class.getName(),
"foo"));
+ events.assertEndTestEvent(2, new TestId(Driver1.class.getName(), "foo"),
new TestSuccess(0));
+ events.assertEndRunnerEvent(3);
assertEquals(list(new TestId("foo")), Driver1.ids);
assertEquals(list(new HashMap()), Driver1.parametrizations);
}
@@ -138,8 +163,14 @@
Driver1.testSuiteInfo.addTest(new SimpleTestCaseInfo("bar"));
GenericTestSuiteDef suite = new GenericTestSuiteDef(Driver1.class.getName());
suite.addTest(new TestDef(new TestId("foo")));
+ EventList events = new EventList();
GenericTestRunner runner = new GenericTestRunner(suite);
- runner.run(new TestRunnerContextSupport());
+ runner.run(new TestRunnerContextSupport(events));
+ assertEquals(4, events.events.size());
+ events.assertStartRunnerEvent(0);
+ events.assertStartTestEvent(1, new TestId(Driver1.class.getName(),
"foo"));
+ events.assertEndTestEvent(2, new TestId(Driver1.class.getName(), "foo"),
new TestSuccess(0));
+ events.assertEndRunnerEvent(3);
assertEquals(list(new TestId("foo")), Driver1.ids);
assertEquals(list(new HashMap()), Driver1.parametrizations);
}
@@ -150,8 +181,16 @@
Driver1.testSuiteInfo.addTest(new SimpleTestCaseInfo("foo"));
Driver1.testSuiteInfo.addTest(new SimpleTestCaseInfo("bar"));
GenericTestSuiteDef suite = new GenericTestSuiteDef(Driver1.class.getName());
+ EventList events = new EventList();
GenericTestRunner runner = new GenericTestRunner(suite);
- runner.run(new TestRunnerContextSupport());
+ runner.run(new TestRunnerContextSupport(events));
+ assertEquals(6, events.events.size());
+ events.assertStartRunnerEvent(0);
+ events.assertStartTestEvent(1, new TestId(Driver1.class.getName(),
"foo"));
+ events.assertEndTestEvent(2, new TestId(Driver1.class.getName(), "foo"),
new TestSuccess(0));
+ events.assertStartTestEvent(3, new TestId(Driver1.class.getName(),
"bar"));
+ events.assertEndTestEvent(4, new TestId(Driver1.class.getName(), "bar"),
new TestSuccess(0));
+ events.assertEndRunnerEvent(5);
assertEquals(list(new TestId("foo"), new TestId("bar")),
Driver1.ids);
assertEquals(list(new HashMap(), new HashMap()), Driver1.parametrizations);
}
Modified:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/POJOTestRunnerTests.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/POJOTestRunnerTests.java 2007-10-13
19:26:25 UTC (rev 8634)
+++
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/POJOTestRunnerTests.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -76,10 +76,10 @@
//
assertEquals(4, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("test"));
- assertEndTestEvent(listener.events.get(2), new TestId("test"), new
TestSuccess(0));
- assertEndRunnerEvent(listener.events.get(3));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId(POJO1.class.getName(),
"test"));
+ listener.assertEndTestEvent(2, new TestId(POJO1.class.getName(), "test"),
new TestSuccess(0));
+ listener.assertEndRunnerEvent(3);
}
private static void testPOJO1_2()
@@ -111,12 +111,12 @@
//
assertEquals(6, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("test"));
- assertEndTestEvent(listener.events.get(2), new TestId("test"), new
TestSuccess(0));
- assertStartTestEvent(listener.events.get(3), new TestId("test"));
- assertEndTestEvent(listener.events.get(4), new TestId("test"), new
TestSuccess(0));
- assertEndRunnerEvent(listener.events.get(5));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId(POJO1.class.getName(),
"test"));
+ listener.assertEndTestEvent(2, new TestId(POJO1.class.getName(), "test"),
new TestSuccess(0));
+ listener.assertStartTestEvent(3, new TestId(POJO1.class.getName(),
"test"));
+ listener.assertEndTestEvent(4, new TestId(POJO1.class.getName(), "test"),
new TestSuccess(0));
+ listener.assertEndRunnerEvent(5);
}
public static class POJO1
Modified:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/TestDriverRunnerTests.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/TestDriverRunnerTests.java 2007-10-13
19:26:25 UTC (rev 8634)
+++
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/TestDriverRunnerTests.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -97,12 +97,12 @@
//
assertEquals(6, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestSuccess(0));
- assertStartTestEvent(listener.events.get(3), new TestId("Bar"));
- assertEndTestEvent(listener.events.get(4), new TestId("Bar"), new
TestSuccess(0));
- assertEndRunnerEvent(listener.events.get(5));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestSuccess(0));
+ listener.assertStartTestEvent(3, new TestId("Bar"));
+ listener.assertEndTestEvent(4, new TestId("Bar"), new TestSuccess(0));
+ listener.assertEndRunnerEvent(5);
}
private static void testInvokeTestCaseWithParameters1()
@@ -133,10 +133,10 @@
//
assertEquals(4, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestSuccess(0));
- assertEndRunnerEvent(listener.events.get(3));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestSuccess(0));
+ listener.assertEndRunnerEvent(3);
// Check parametrization
Set<Map<String,String>> s1 = new HashSet<Map<String,
String>>();
@@ -178,12 +178,12 @@
//
assertEquals(6, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestSuccess(0));
- assertStartTestEvent(listener.events.get(3), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(4), new TestId("Foo"), new
TestSuccess(0));
- assertEndRunnerEvent(listener.events.get(5));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestSuccess(0));
+ listener.assertStartTestEvent(3, new TestId("Foo"));
+ listener.assertEndTestEvent(4, new TestId("Foo"), new TestSuccess(0));
+ listener.assertEndRunnerEvent(5);
// Check parametrization
Set<Map<String,String>> s1 = new HashSet<Map<String,
String>>();
@@ -215,8 +215,8 @@
//
assertEquals(2, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertEndRunnerEvent(listener.events.get(1));
+ listener.assertStartRunnerEvent(0);
+ listener.assertEndRunnerEvent(1);
}
private static void testTestDriverInvokeTestCaseReturnsNull()
@@ -234,10 +234,10 @@
//
assertEquals(4, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestFailure(new Failure("", FailureType.ERROR), 0));
- assertEndRunnerEvent(listener.events.get(3));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestFailure(new
Failure("", FailureType.ERROR), 0));
+ listener.assertEndRunnerEvent(3);
}
private static void testTestDriverInvokeTestCaseReturnsAnEndTestResponse()
@@ -261,10 +261,10 @@
//
assertEquals(4, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestSuccess(0));
- assertEndRunnerEvent(listener.events.get(3));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestSuccess(0));
+ listener.assertEndRunnerEvent(3);
}
private static void testTestDriverInvokeTestCaseReturnsAFailureResponse()
@@ -288,10 +288,10 @@
//
assertEquals(4, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestFailure(new Failure("", FailureType.ERROR), 0));
- assertEndRunnerEvent(listener.events.get(3));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestFailure(new
Failure("", FailureType.ERROR), 0));
+ listener.assertEndRunnerEvent(3);
}
private static void testTestDriverInvokeTestCaseThrowsRuntimeException()
@@ -315,10 +315,10 @@
//
assertEquals(4, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
- assertEndTestEvent(listener.events.get(2), new TestId("Foo"), new
TestFailure(new Failure("", FailureType.ERROR), 0));
- assertEndRunnerEvent(listener.events.get(3));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
+ listener.assertEndTestEvent(2, new TestId("Foo"), new TestFailure(new
Failure("", FailureType.ERROR), 0));
+ listener.assertEndRunnerEvent(3);
}
private static void testTestDriverInvokeTestCaseThrowsError()
@@ -352,8 +352,8 @@
//
assertEquals(2, listener.events.size());
- assertStartRunnerEvent(listener.events.get(0));
- assertStartTestEvent(listener.events.get(1), new TestId("Foo"));
+ listener.assertStartRunnerEvent(0);
+ listener.assertStartTestEvent(1, new TestId("Foo"));
}
}
Modified: modules/test/trunk/unit/src/main/org/jboss/unit/TestId.java
===================================================================
--- modules/test/trunk/unit/src/main/org/jboss/unit/TestId.java 2007-10-13 19:26:25 UTC
(rev 8634)
+++ modules/test/trunk/unit/src/main/org/jboss/unit/TestId.java 2007-10-13 20:33:24 UTC
(rev 8635)
@@ -64,6 +64,26 @@
this.names = names;
}
+ public TestId(String name, TestId suffix)
+ {
+ if (suffix == null)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (name == null)
+ {
+ throw new IllegalArgumentException();
+ }
+
+ //
+ String[] names = new String[1 + suffix.names.length];
+ names[0] = name;
+ System.arraycopy(suffix.names, 0, names, 1, suffix.names.length);
+
+ //
+ this.names = names;
+ }
+
public TestId(String name)
{
if (name == null)
Added:
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/DelegateRunnerEventFilter.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/DelegateRunnerEventFilter.java
(rev 0)
+++
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/DelegateRunnerEventFilter.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -0,0 +1,86 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.unit.runner.impl;
+
+import org.jboss.unit.runner.TestRunnerEventListener;
+import org.jboss.unit.runner.TestRunnerEvent;
+import org.jboss.unit.runner.event.StartRunnerEvent;
+import org.jboss.unit.runner.event.EndRunnerEvent;
+import org.jboss.unit.runner.event.StartTestEvent;
+import org.jboss.unit.runner.event.EndTestEvent;
+import org.jboss.unit.TestId;
+
+/**
+ * <p>The goal of this listener class is to route events to a target listener and
operate on the events
+ * with the following manner:</p>
+ * <p>
+ * <ul>
+ * <li>Absorb any event of type <code>StartRunnerEvent</code> or
<code>EndRunnerEvent</code></li>
+ * <li>Event of type <code>StartTestEvent</code> or
<code>EndTestEvent</code> have their test id transformed
+ * by adding the <code>testName</code> field as prefix of the
id</li>
+ * </ul>
+ * </p>
+ * <p>The use case of this class is a test runner which delegates to another test
runner and wants to absorb the
+ * life cycle events emitted by the runner and apply a transformation of the test id of
the test life cycle events
+ * emitted by the runner.
+ * </p>
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class DelegateRunnerEventFilter implements TestRunnerEventListener
+{
+
+ /** . */
+ private String testName;
+
+ /** . */
+ private TestRunnerEventListener listener;
+
+ public DelegateRunnerEventFilter(String testName, TestRunnerEventListener listener)
+ {
+ this.testName = testName;
+ this.listener = listener;
+ }
+
+ public void onEvent(TestRunnerEvent event)
+ {
+ if (event instanceof StartRunnerEvent || event instanceof EndRunnerEvent)
+ {
+ return;
+ }
+ if (event instanceof StartTestEvent)
+ {
+ StartTestEvent ste = (StartTestEvent)event;
+ TestId newId = new TestId(testName, ste.getTestId());
+ event = new StartTestEvent(newId, ste.getTestInfo());
+ }
+ else if (event instanceof EndTestEvent)
+ {
+ EndTestEvent ste = (EndTestEvent)event;
+ TestId newId = new TestId(testName, ste.getTestId());
+ event = new EndTestEvent(newId, ste.getTestResult());
+ }
+ listener.onEvent(event);
+ }
+}
Modified:
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/generic/GenericTestRunner.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/generic/GenericTestRunner.java 2007-10-13
19:26:25 UTC (rev 8634)
+++
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/generic/GenericTestRunner.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -25,11 +25,10 @@
import org.jboss.unit.runner.AbstractTestRunner;
import org.jboss.unit.runner.ParametrizationSet;
import org.jboss.unit.runner.TestRunnerContext;
-import org.jboss.unit.runner.impl.TestRunnerLifeCycleFilter;
import org.jboss.unit.runner.event.RunnerFailureEvent;
-import org.jboss.unit.runner.impl.TestRunnerEventBroadcaster;
import org.jboss.unit.runner.impl.driver.TestDriverRunner;
import org.jboss.unit.runner.impl.TestRunnerContextSupport;
+import org.jboss.unit.runner.impl.DelegateRunnerEventFilter;
import org.jboss.unit.runner.model.generic.GenericTestSuiteDef;
import org.jboss.unit.runner.model.generic.TestDef;
import org.jboss.unit.driver.TestDriver;
@@ -54,13 +53,12 @@
this.def = def;
}
- protected void internalRun(TestRunnerContext context)
+ protected void internalRun(final TestRunnerContext context)
{
String className = def.getClassName();
- // Setup intermediate event filtering
- TestRunnerEventBroadcaster tmp = new TestRunnerEventBroadcaster();
- tmp.addListener(new TestRunnerLifeCycleFilter(context.getEventListener()));
+ //
+ DelegateRunnerEventFilter filter = new DelegateRunnerEventFilter(className,
context.getEventListener());
//
try
@@ -85,7 +83,7 @@
parametrizations.combine(context.getParametrizations());
//
- TestRunnerContextSupport genericContext = new
TestRunnerContextSupport(context.getProperties(), parametrizations, context.getFilter(),
tmp);
+ TestRunnerContextSupport genericContext = new
TestRunnerContextSupport(context.getProperties(), parametrizations, context.getFilter(),
filter);
//
TestDriverRunner runner = new TestDriverRunner(driver, testDef.getRefId());
Modified:
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/pojo/POJOTestRunner.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/pojo/POJOTestRunner.java 2007-10-13
19:26:25 UTC (rev 8634)
+++
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/pojo/POJOTestRunner.java 2007-10-13
20:33:24 UTC (rev 8635)
@@ -27,8 +27,7 @@
import org.jboss.unit.runner.TestRunnerContext;
import org.jboss.unit.runner.impl.driver.TestDriverRunner;
import org.jboss.unit.runner.impl.TestRunnerContextSupport;
-import org.jboss.unit.runner.impl.TestRunnerEventBroadcaster;
-import org.jboss.unit.runner.impl.TestRunnerLifeCycleFilter;
+import org.jboss.unit.runner.impl.DelegateRunnerEventFilter;
import org.jboss.unit.runner.event.RunnerFailureEvent;
import org.jboss.unit.runner.model.pojo.POJOTestSuiteDef;
import org.jboss.unit.runner.model.pojo.TestClassDef;
@@ -59,16 +58,14 @@
protected void internalRun(TestRunnerContext context)
{
- // Setup intermediate event filtering
- TestRunnerEventBroadcaster tmp = new TestRunnerEventBroadcaster();
- tmp.addListener(new TestRunnerLifeCycleFilter(context.getEventListener()));
-
- //
for (TestClassDef testClass : suite.getTestClasses())
{
String className = testClass.getName();
//
+ DelegateRunnerEventFilter filter = new DelegateRunnerEventFilter(className,
context.getEventListener());
+
+ //
try
{
Class clazz =
Thread.currentThread().getContextClassLoader().loadClass(className);
@@ -94,7 +91,7 @@
parametrizations.combine(context.getParametrizations());
//
- TestRunnerContextSupport pojoContext = new
TestRunnerContextSupport(context.getProperties(), parametrizations, context.getFilter(),
tmp);
+ TestRunnerContextSupport pojoContext = new
TestRunnerContextSupport(context.getProperties(), parametrizations, context.getFilter(),
filter);
//
TestDriverRunner runner = new TestDriverRunner(driver);