ejuf-cvs Mailing List for Extensible Java Unit-testing Framework
Brought to you by:
fbos
You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(18) |
Dec
(14) |
|---|
|
From: <fb...@us...> - 2002-12-27 20:03:58
|
Update of /cvsroot/ejuf/ejuf/src/java/core/junit/framework
In directory sc8-pr-cvs1:/tmp/cvs-serv18688/core/junit/framework
Modified Files:
TestCase.java
Log Message:
Made junit.framework.TestCase implement Testable so that TestCases may be found by ClasspathTestSource.
This has introduced a bug where the ClasspathTestSource should ignore the class junit.framework.TestCase.
This is an option that should be added to ClasspathTestSource.
Index: TestCase.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/junit/framework/TestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TestCase.java 15 Nov 2002 14:10:01 -0000 1.1
--- TestCase.java 27 Dec 2002 20:03:55 -0000 1.2
***************
*** 4,8 ****
* @deprecated Replaced by {@link ejuf.framework.Test} and {@link ejuf.framework.TestFixture}.
*/
! public class TestCase extends Assert implements junit.framework.Test {
public TestCase() {
}
--- 4,8 ----
* @deprecated Replaced by {@link ejuf.framework.Test} and {@link ejuf.framework.TestFixture}.
*/
! public class TestCase extends Assert implements junit.framework.Test, ejuf.framework.Testable {
public TestCase() {
}
|
|
From: <fb...@us...> - 2002-12-27 20:03:58
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/junit/framework
In directory sc8-pr-cvs1:/tmp/cvs-serv18688/tests/junit/framework
Modified Files:
TestCaseTest.java
Log Message:
Made junit.framework.TestCase implement Testable so that TestCases may be found by ClasspathTestSource.
This has introduced a bug where the ClasspathTestSource should ignore the class junit.framework.TestCase.
This is an option that should be added to ClasspathTestSource.
Index: TestCaseTest.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/tests/junit/framework/TestCaseTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TestCaseTest.java 15 Nov 2002 17:34:52 -0000 1.2
--- TestCaseTest.java 27 Dec 2002 20:03:55 -0000 1.3
***************
*** 1,11 ****
package junit.framework;
import ejuf.framework.Testable;
- import ejuf.helpers.BaseTestable;
! public class TestCaseTest extends BaseTestable implements Testable {
public void testExtendsAssert() {
! assertEquals("junit.framework.TestCase extends junit.framework.Assert",
! true, junit.framework.Assert.class.isAssignableFrom(
junit.framework.TestCase.class)
);
--- 1,18 ----
package junit.framework;
+ import ejuf.assertions.EqualityAssertions;
import ejuf.framework.Testable;
! public abstract class TestCaseTest implements Testable, EqualityAssertions {
public void testExtendsAssert() {
! assertTrue("junit.framework.TestCase extends junit.framework.Assert",
! junit.framework.Assert.class.isAssignableFrom(
! junit.framework.TestCase.class)
! );
! }
!
! public void testIsTestable() {
! assertTrue("junit.framework.TestCase implements ejuf.framework.Testable",
! ejuf.framework.Testable.class.isAssignableFrom(
junit.framework.TestCase.class)
);
***************
*** 13,18 ****
public void testImplementsTest() {
! assertEquals("junit.framework.TestCase implements junit.framework.Test",
! true, junit.framework.Test.class.isAssignableFrom(
junit.framework.TestCase.class)
);
--- 20,25 ----
public void testImplementsTest() {
! assertTrue("junit.framework.TestCase implements junit.framework.Test",
! junit.framework.Test.class.isAssignableFrom(
junit.framework.TestCase.class)
);
|
|
From: <fb...@us...> - 2002-12-24 14:42:01
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/reporters
In directory sc8-pr-cvs1:/tmp/cvs-serv27269/java/core/ejuf/reporters
Modified Files:
XmlReporter.java
Log Message:
Added new filter for ejuf.assertions to XmlReporter
Index: XmlReporter.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/reporters/XmlReporter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** XmlReporter.java 15 Nov 2002 14:10:00 -0000 1.1
--- XmlReporter.java 24 Dec 2002 14:41:58 -0000 1.2
***************
*** 36,39 ****
--- 36,40 ----
stackFilterElements.add("ejuf.runners.DirectTestRunner");
stackFilterElements.add("java.lang.reflect");
+ stackFilterElements.add("ejuf.assertions");
final File baseDir = new File(".").getAbsoluteFile();
|
|
From: <fb...@us...> - 2002-12-23 23:36:30
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/assertions
In directory sc8-pr-cvs1:/tmp/cvs-serv5814/tests/ejuf/assertions
Modified Files:
EqualityAssertionsImplTest.java
Log Message:
Corrected a bug where float and double comparison would fail if the expected value was larger than the actual value. This was due to a failure to use Math.abs() while comparing values.
Index: EqualityAssertionsImplTest.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/tests/ejuf/assertions/EqualityAssertionsImplTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** EqualityAssertionsImplTest.java 15 Nov 2002 17:34:49 -0000 1.2
--- EqualityAssertionsImplTest.java 23 Dec 2002 23:36:27 -0000 1.3
***************
*** 11,15 ****
public void setUp() throws Exception {
! ((AssertionServices)a).addAssertionListener(this);
expectedAssertionCount.setExpected(2);
--- 11,15 ----
public void setUp() throws Exception {
! a.addAssertionListener(this);
expectedAssertionCount.setExpected(2);
***************
*** 192,195 ****
--- 192,291 ----
assertEquals(new Float(1.1f), possibleSuccess.getActualValue());
assertEquals("with message", possibleSuccess.getAssertionMessage());
+ }
+ }
+
+ public void testInt_ExpectedLargerThanActual() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 1, 0);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Integer(1), possibleSuccess.getExpectedValue());
+ assertEquals(new Integer(0), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testInt_ActualLargerThanExpected() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 0, 1);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Integer(0), possibleSuccess.getExpectedValue());
+ assertEquals(new Integer(1), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testLong_ExpectedLargerThanActual() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 1l, 0l);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Long(1l), possibleSuccess.getExpectedValue());
+ assertEquals(new Long(0l), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testLong_ActualLargerThanExpected() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 0l, 1l);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Long(0l), possibleSuccess.getExpectedValue());
+ assertEquals(new Long(1l), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testFloat_ExpectedLargerThanActual() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 1.0f, 0.0f, 0.0f);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Float(1.0f), possibleSuccess.getExpectedValue());
+ assertEquals(new Float(0.0f), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testFloat_ActualLargerThanExpected() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 0.0f, 1.0f, 0.0f);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Float(0.0f), possibleSuccess.getExpectedValue());
+ assertEquals(new Float(1.0f), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testDouble_ExpectedLargerThanActual() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 1.0d, 0.0d, 0.0d);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Double(1.0d), possibleSuccess.getExpectedValue());
+ assertEquals(new Double(0.0d), possibleSuccess.getActualValue());
+ }
+ }
+
+ public void testDouble_ActualLargerThanExpected() {
+ expectedAssertionCount.setExpected(1);
+
+ try {
+ a.assertEquals("should fail", 0.0d, 1.0d, 0.0d);
+ fail("test should have failed");
+ } catch (ComparisonError possibleSuccess) {
+ assertEquals(new Double(0.0d), possibleSuccess.getExpectedValue());
+ assertEquals(new Double(1.0d), possibleSuccess.getActualValue());
}
}
|
|
From: <fb...@us...> - 2002-12-23 23:36:30
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/assertions
In directory sc8-pr-cvs1:/tmp/cvs-serv5814/core/ejuf/assertions
Modified Files:
EqualityAssertionsImpl.java
Log Message:
Corrected a bug where float and double comparison would fail if the expected value was larger than the actual value. This was due to a failure to use Math.abs() while comparing values.
Index: EqualityAssertionsImpl.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/assertions/EqualityAssertionsImpl.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** EqualityAssertionsImpl.java 15 Nov 2002 14:09:59 -0000 1.1
--- EqualityAssertionsImpl.java 23 Dec 2002 23:36:27 -0000 1.2
***************
*** 96,100 ****
public void assertEquals(String msg, float expected, float actual, float comparisonDelta) {
final ComparisonError e = new ComparisonError(msg, new Float(expected), new Float(actual));
! float valueDelta = actual - expected;
if (valueDelta <= comparisonDelta) {
assertionPassed(e);
--- 96,100 ----
public void assertEquals(String msg, float expected, float actual, float comparisonDelta) {
final ComparisonError e = new ComparisonError(msg, new Float(expected), new Float(actual));
! float valueDelta = Math.abs(actual - expected);
if (valueDelta <= comparisonDelta) {
assertionPassed(e);
***************
*** 110,114 ****
public void assertEquals(String msg, double expected, double actual, double comparisonDelta) {
final ComparisonError e = new ComparisonError(msg, new Double(expected), new Double(actual));
! double valueDelta = actual - expected;
if (valueDelta <= comparisonDelta) {
assertionPassed(e);
--- 110,114 ----
public void assertEquals(String msg, double expected, double actual, double comparisonDelta) {
final ComparisonError e = new ComparisonError(msg, new Double(expected), new Double(actual));
! double valueDelta = Math.abs(actual - expected);
if (valueDelta <= comparisonDelta) {
assertionPassed(e);
|
|
From: <fb...@us...> - 2002-12-03 01:00:38
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/config
In directory sc8-pr-cvs1:/tmp/cvs-serv24040/java/core/ejuf/config
Modified Files:
ConfigurationManager.java
Log Message:
Started implementing configuration manager.
Index: ConfigurationManager.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/config/ConfigurationManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ConfigurationManager.java 2 Dec 2002 01:54:03 -0000 1.1
--- ConfigurationManager.java 3 Dec 2002 01:00:34 -0000 1.2
***************
*** 1,12 ****
package ejuf.config;
- import org.w3c.dom.Document;
import ejuf.framework.TestSource;
public class ConfigurationManager {
private TestSource source;
! public void configure(Document document) {
}
--- 1,38 ----
package ejuf.config;
import ejuf.framework.TestSource;
+ import ejuf.runners.ConfigurationException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
public class ConfigurationManager {
+ public static final String EJUF_CFG_NS_URI = "http://ejuf.sourceforge.net/ejuf-cfg/1.0";
private TestSource source;
! public void configure(Document document) throws ConfigurationException {
! final NodeList sourceNodes =
! document.getElementsByTagNameNS(EJUF_CFG_NS_URI, "source");
! final Node sourceNode = sourceNodes.item(0);
! final NodeList sourceChildren = sourceNode.getChildNodes();
! for (int i = 0; i < sourceChildren.getLength(); i++) {
! final Node someNode = sourceChildren.item(i);
! if (null == someNode) continue;
+ if (EJUF_CFG_NS_URI.equals(someNode.getNamespaceURI())
+ && "class".equals(someNode.getNodeName())) {
+ // This is the class that we are going to instantiate
+ final String sourceClassName = someNode.getNodeValue();
+ final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Class sourceClass = contextClassLoader.loadClass(sourceClassName);
+ source = (TestSource)sourceClass.newInstance();
+ } catch (Exception e) {
+ throw new ConfigurationException(
+ "unable to configure TestSource using class name: "
+ + sourceClassName, e);
+ }
+ }
+ }
}
|
|
From: <fb...@us...> - 2002-12-02 01:54:07
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/config
In directory sc8-pr-cvs1:/tmp/cvs-serv13273/src/java/tests/ejuf/config
Added Files:
ConfigurationManagerTest.java
Log Message:
Added new configuration manager tests for an object which reads configuration from a DOM document and instantiates appropriate objects for that
--- NEW FILE: ConfigurationManagerTest.java ---
package ejuf.config;
import ejuf.assertions.EqualityAssertions;
import ejuf.assertions.FailureAssertions;
import ejuf.assertions.UnexpectedValueAssertions;
import ejuf.framework.TestFixture;
import ejuf.framework.Testable;
import ejuf.mocks.MockTestSource;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
public abstract class ConfigurationManagerTest
implements Testable, TestFixture, EqualityAssertions,
UnexpectedValueAssertions, FailureAssertions, ErrorHandler {
private DocumentBuilder docBuilder;
public void setUp() throws Exception {
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(false);
docBuilder = factory.newDocumentBuilder();
}
public void tearDown() throws Exception {
}
public void testInstantiateSource() throws Exception {
final String source =
"<?xml version='1.0' encoding='utf-8'?>\n"
+"<!DOCTYPE ejuf:config SYSTEM 'file:///java/src/ejuf/build/dtd/ejuf-cfg-1.0.dtd'>\n"
+ "<ejuf:config xmlns:ejuf='http://ejuf.sourceforge.net/ejuf-cfg/1.0'>\n"
+ " <ejuf:source>\n"
+ " <ejuf:class>ejuf.mocks.MockTestSource</ejuf:class>\n"
+ " </ejuf:source>\n"
+ "</ejuf:config>\n";
docBuilder.setErrorHandler(this);
Document doc = docBuilder.parse(
new InputSource(
new StringReader(
source
)
)
);
ConfigurationManager cfgMgr = new ConfigurationManager();
cfgMgr.configure(doc);
assertNotNull("some source was instantiated", cfgMgr.getSource());
assertTrue("source is of right class",
cfgMgr.getSource() instanceof MockTestSource);
}
public void error(SAXParseException exception) throws SAXException {
fail("received error", exception);
}
public void fatalError(SAXParseException exception) throws SAXException {
fail("received fatal error", exception);
}
public void warning(SAXParseException exception) throws SAXException {
fail("received warning", exception);
}
}
|
|
From: <fb...@us...> - 2002-12-02 01:54:06
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/config
In directory sc8-pr-cvs1:/tmp/cvs-serv13273/src/java/core/ejuf/config
Added Files:
ConfigurationManager.java
Log Message:
Added new configuration manager tests for an object which reads configuration from a DOM document and instantiates appropriate objects for that
--- NEW FILE: ConfigurationManager.java ---
package ejuf.config;
import org.w3c.dom.Document;
import ejuf.framework.TestSource;
public class ConfigurationManager {
private TestSource source;
public void configure(Document document) {
}
public TestSource getSource() {
return source;
}
}
|
|
From: <fb...@us...> - 2002-12-02 01:53:13
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/config In directory sc8-pr-cvs1:/tmp/cvs-serv12708/src/java/tests/ejuf/config Log Message: Directory /cvsroot/ejuf/ejuf/src/java/tests/ejuf/config added to the repository |
|
From: <fb...@us...> - 2002-12-02 01:53:13
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/config In directory sc8-pr-cvs1:/tmp/cvs-serv12708/src/java/core/ejuf/config Log Message: Directory /cvsroot/ejuf/ejuf/src/java/core/ejuf/config added to the repository |
|
From: <fb...@us...> - 2002-12-01 20:10:57
|
Update of /cvsroot/ejuf/ejuf
In directory sc8-pr-cvs1:/tmp/cvs-serv25286
Modified Files:
ejufcfg.xml
Log Message:
Updated to remove possible confusion between document root and individual element configurations.
Index: ejufcfg.xml
===================================================================
RCS file: /cvsroot/ejuf/ejuf/ejufcfg.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ejufcfg.xml 1 Dec 2002 20:01:21 -0000 1.1
--- ejufcfg.xml 1 Dec 2002 20:10:53 -0000 1.2
***************
*** 8,28 ****
<ejuf:source>
<ejuf:class>ejuf.sources.ClasspathTestSource</ejuf:class>
! <ejuf:config xmlns:cp="http://ejuf.sourceforge.net/classpath-cfg/1.0">
<cp:file-include>.*Test</cp:file-include>
<cp:file-exclude>.*$.*</cp:file-exclude>
! </ejuf:config>
</ejuf:source>
<ejuf:sourcerunner>
<ejuf:class>ejuf.runners.DirectTestRunner</ejuf:class>
! <ejuf:config />
</ejuf:sourcerunner>
<ejuf:reporter>
<ejuf:class>ejuf.reporters.TextReporter</ejuf:class>
! <ejuf:config xmlns:tr="http://ejuf.sourceforge.net/textreporter-cfg/1.0">>
<tr:col-width>60</tr:col-width>
<tr:report-disabled>true</tr:report-disabled>
! </ejuf:config>
</ejuf:reporter>
--- 8,28 ----
<ejuf:source>
<ejuf:class>ejuf.sources.ClasspathTestSource</ejuf:class>
! <ejuf:elem-config xmlns:cp="http://ejuf.sourceforge.net/classpath-cfg/1.0">
<cp:file-include>.*Test</cp:file-include>
<cp:file-exclude>.*$.*</cp:file-exclude>
! </ejuf:elem-config>
</ejuf:source>
<ejuf:sourcerunner>
<ejuf:class>ejuf.runners.DirectTestRunner</ejuf:class>
! <ejuf:elem-config />
</ejuf:sourcerunner>
<ejuf:reporter>
<ejuf:class>ejuf.reporters.TextReporter</ejuf:class>
! <ejuf:elem-config xmlns:tr="http://ejuf.sourceforge.net/textreporter-cfg/1.0">>
<tr:col-width>60</tr:col-width>
<tr:report-disabled>true</tr:report-disabled>
! </ejuf:elem-config>
</ejuf:reporter>
***************
*** 30,34 ****
<ejuf:runlistener>
<ejuf:class id="disabled-listener">ejuf.listeners.DisabledTestListener</ejuf:class>
! <ejuf:config />
</ejuf:runlistener>
</ejuf:runlisteners>
--- 30,34 ----
<ejuf:runlistener>
<ejuf:class id="disabled-listener">ejuf.listeners.DisabledTestListener</ejuf:class>
! <ejuf:elem-config />
</ejuf:runlistener>
</ejuf:runlisteners>
***************
*** 37,45 ****
<ejuf:testlistener>
<ejuf:ref refid="disabled-listener"/>
! <ejuf:config />
</ejuf:testlistener>
<ejuf:testlistener>
<ejuf:class>ejuf.listeners.ProgressTestListener</ejuf:class>
! <ejuf:config />
</ejuf:testlistener>
</ejuf:testlisteners>
--- 37,45 ----
<ejuf:testlistener>
<ejuf:ref refid="disabled-listener"/>
! <ejuf:elem-config />
</ejuf:testlistener>
<ejuf:testlistener>
<ejuf:class>ejuf.listeners.ProgressTestListener</ejuf:class>
! <ejuf:elem-config />
</ejuf:testlistener>
</ejuf:testlisteners>
|
|
From: <fb...@us...> - 2002-12-01 20:01:28
|
Update of /cvsroot/ejuf/ejuf In directory sc8-pr-cvs1:/tmp/cvs-serv20251 Added Files: ejufcfg.xml Log Message: First draft of an XML configuration file for EJUF. --- NEW FILE: ejufcfg.xml --- <?xml version="1.0" encoding="iso-8859-1"?> <ejuf:config xmlns:ejuf="http://ejuf.sourceforge.net/ejuf-cfg/1.0"> <ejuf:runner> <ejuf:class>ejuf.runners.DefaultTestRunner</ejuf:class> <ejuf:config /> </ejuf:runner> <ejuf:source> <ejuf:class>ejuf.sources.ClasspathTestSource</ejuf:class> <ejuf:config xmlns:cp="http://ejuf.sourceforge.net/classpath-cfg/1.0"> <cp:file-include>.*Test</cp:file-include> <cp:file-exclude>.*$.*</cp:file-exclude> </ejuf:config> </ejuf:source> <ejuf:sourcerunner> <ejuf:class>ejuf.runners.DirectTestRunner</ejuf:class> <ejuf:config /> </ejuf:sourcerunner> <ejuf:reporter> <ejuf:class>ejuf.reporters.TextReporter</ejuf:class> <ejuf:config xmlns:tr="http://ejuf.sourceforge.net/textreporter-cfg/1.0">> <tr:col-width>60</tr:col-width> <tr:report-disabled>true</tr:report-disabled> </ejuf:config> </ejuf:reporter> <ejuf:runlisteners> <ejuf:runlistener> <ejuf:class id="disabled-listener">ejuf.listeners.DisabledTestListener</ejuf:class> <ejuf:config /> </ejuf:runlistener> </ejuf:runlisteners> <ejuf:testlisteners> <ejuf:testlistener> <ejuf:ref refid="disabled-listener"/> <ejuf:config /> </ejuf:testlistener> <ejuf:testlistener> <ejuf:class>ejuf.listeners.ProgressTestListener</ejuf:class> <ejuf:config /> </ejuf:testlistener> </ejuf:testlisteners> </ejuf:config> |
|
From: <fb...@us...> - 2002-12-01 19:42:26
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/swingui/models
In directory sc8-pr-cvs1:/tmp/cvs-serv8367/core/ejuf/swingui/models
Modified Files:
TableModelTestListener.java
Log Message:
Made TableModelTestListenerTest pass by having the table model reset itself when a new run starts
Index: TableModelTestListener.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/swingui/models/TableModelTestListener.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TableModelTestListener.java 30 Nov 2002 18:21:24 -0000 1.1
--- TableModelTestListener.java 1 Dec 2002 19:42:20 -0000 1.2
***************
*** 63,66 ****
--- 63,67 ----
public void beginRun(TestRunnerEvent event) {
+ events.clear();
}
|
|
From: <fb...@us...> - 2002-12-01 19:42:26
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/swingui/models
In directory sc8-pr-cvs1:/tmp/cvs-serv8367/tests/ejuf/swingui/models
Modified Files:
TableModelTestListenerTest.java
Log Message:
Made TableModelTestListenerTest pass by having the table model reset itself when a new run starts
Index: TableModelTestListenerTest.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/tests/ejuf/swingui/models/TableModelTestListenerTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TableModelTestListenerTest.java 30 Nov 2002 18:21:25 -0000 1.1
--- TableModelTestListenerTest.java 1 Dec 2002 19:42:21 -0000 1.2
***************
*** 83,87 ****
);
! assertEquals(1,model.getRowCount());
runListener.beginRun(new TestRunnerEvent(this));
--- 83,87 ----
);
! assertEquals(1, model.getRowCount());
runListener.beginRun(new TestRunnerEvent(this));
|
|
From: <fb...@us...> - 2002-11-30 18:21:27
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/swingui/models
In directory sc8-pr-cvs1:/tmp/cvs-serv6683/tests/ejuf/swingui/models
Added Files:
TableModelTestListenerTest.java
Log Message:
Added TableModelTestListener tests which implements the concept of a table model that updates itself using events generated by the test runner.
--- NEW FILE: TableModelTestListenerTest.java ---
package ejuf.swingui.models;
import ejuf.framework.*;
import ejuf.assertions.EqualityAssertions;
import ejuf.mocks.MockTest;
import javax.swing.table.*;
public abstract class TableModelTestListenerTest implements Testable, EqualityAssertions {
private final TableModel model = new TableModelTestListener();
private final TestRunnerListener runListener = (TestRunnerListener)model;
private final TestListener listener = (TestListener)model;
public void testValueAtInit() {
assertEquals("0 rows at initialization", 0, model.getRowCount());
assertEquals("all columns present at init", 4, model.getColumnCount());
assertEquals("column name is correct", "No", model.getColumnName(0));
assertEquals("column name is correct", "Name", model.getColumnName(1));
assertEquals("column name is correct", "Status", model.getColumnName(2));
assertEquals("column name is correct", "Details", model.getColumnName(3));
}
public void testAddsItemToModelWhenStartEventGenerated() {
listener.startTest(
new TestEvent(
this, new MockTest("My Test"), TestEvent.Status.NOT_RUN)
);
assertEquals("1 row after start occured", 1, model.getRowCount());
assertEquals("value of column", "1", model.getValueAt(0, 0));
assertEquals("value of column", "My Test", model.getValueAt(0, 1));
assertEquals("value of column",
TestEvent.Status.NOT_RUN.getName(), model.getValueAt(0, 2));
assertEquals("value of column", "", model.getValueAt(0, 3));
}
public void testStatusUpdatedWhenEndReceived() {
final MockTest aTest = new MockTest("Some Test");
listener.startTest(
new TestEvent(
this, aTest, TestEvent.Status.NOT_RUN)
);
listener.endTest(
new TestEvent(this, aTest, TestEvent.Status.SUCCESS)
);
assertEquals("1 row even after end", 1, model.getRowCount());
assertEquals("value of column", "1", model.getValueAt(0, 0));
assertEquals("value of column", "Some Test", model.getValueAt(0, 1));
assertEquals("value of column",
TestEvent.Status.SUCCESS.getName(), model.getValueAt(0, 2));
assertEquals("value of column", "", model.getValueAt(0, 3));
}
public void testDetailsColumnContainsExceptionsClassAndMessage() {
final MockTest aTest = new MockTest("Failed Test");
listener.startTest(
new TestEvent(
this, aTest, TestEvent.Status.NOT_RUN)
);
final ComparisonError assertionFailure =
new ComparisonError("some failure message", "a", "b");
listener.endTest(
new TestEvent(this, aTest, TestEvent.Status.FAILURE,
assertionFailure)
);
assertEquals("value of column",
TestEvent.Status.FAILURE.getName(), model.getValueAt(0, 2));
assertEquals("value of column",
"ComparisonError: "
+ assertionFailure.getMessage(),
model.getValueAt(0, 3));
}
public void testNewRunResetsModelToInitialState() {
final MockTest aTest = new MockTest("Failed Test");
listener.startTest(
new TestEvent(
this, aTest, TestEvent.Status.NOT_RUN)
);
assertEquals(1,model.getRowCount());
runListener.beginRun(new TestRunnerEvent(this));
testValueAtInit();
}
}
|
|
From: <fb...@us...> - 2002-11-30 18:21:27
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/swingui/models
In directory sc8-pr-cvs1:/tmp/cvs-serv6683/core/ejuf/swingui/models
Added Files:
TableModelTestListener.java
Log Message:
Added TableModelTestListener tests which implements the concept of a table model that updates itself using events generated by the test runner.
--- NEW FILE: TableModelTestListener.java ---
package ejuf.swingui.models;
import ejuf.framework.TestEvent;
import ejuf.framework.TestListener;
import ejuf.framework.TestRunnerEvent;
import ejuf.framework.TestRunnerListener;
import javax.swing.table.*;
import java.util.List;
import java.util.LinkedList;
public class TableModelTestListener extends AbstractTableModel implements TestRunnerListener, TestListener {
private static final String[] COLUMN_NAMES =
new String[]{"No", "Name", "Status", "Details"};
private final List events = new LinkedList();
public int getColumnCount() {
return COLUMN_NAMES.length;
}
public int getRowCount() {
return events.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
final TestEvent event = (TestEvent)events.get(rowIndex);
final String value;
switch (columnIndex) {
case 0:
value = String.valueOf(1 + rowIndex);
break;
case 1:
value = event.getTest().getName();
break;
case 2:
value = event.getStatus().getName();
break;
case 3:
if (null == event.getException()) {
value = "";
} else {
String name = event.getException().getClass().getName();
name = name.substring(1+name.lastIndexOf('.'));
value = name + ": " + event.getException().getMessage();
}
break;
default:
value = "";
break;
}
return value;
}
public String getColumnName(int column) {
return COLUMN_NAMES[column];
}
public void beginRun(TestRunnerEvent event) {
}
public void endRun(TestRunnerEvent event) {
}
public void endTest(TestEvent event) {
events.set(events.size() - 1, event);
}
public void startTest(TestEvent event) {
events.add(event);
}
}
|
|
From: <fb...@us...> - 2002-11-29 19:19:23
|
Update of /cvsroot/ejuf/ejuf/src/xdocs/template
In directory sc8-pr-cvs1:/tmp/cvs-serv14983/template
Modified Files:
template.xsl
Log Message:
Updated information about JUnit and assertions class extension implementers
Index: template.xsl
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/xdocs/template/template.xsl,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** template.xsl 19 Nov 2002 04:15:31 -0000 1.7
--- template.xsl 29 Nov 2002 19:19:20 -0000 1.8
***************
*** 150,153 ****
--- 150,171 ----
</xsl:template>
+ <xsl:template match="html:h1">
+ <h1>
+ <xsl:apply-templates/>
+ </h1>
+ </xsl:template>
+
+ <xsl:template match="html:h2">
+ <h2>
+ <xsl:apply-templates/>
+ </h2>
+ </xsl:template>
+
+ <xsl:template match="html:h3">
+ <h3>
+ <xsl:apply-templates/>
+ </h3>
+ </xsl:template>
+
<xsl:template match="html:li">
<li>
|
|
From: <fb...@us...> - 2002-11-29 19:19:22
|
Update of /cvsroot/ejuf/ejuf/src/xdocs/htdocs/assertions-impl
In directory sc8-pr-cvs1:/tmp/cvs-serv14983/htdocs/assertions-impl
Modified Files:
index.xml
Log Message:
Updated information about JUnit and assertions class extension implementers
Index: index.xml
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/xdocs/htdocs/assertions-impl/index.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** index.xml 18 Nov 2002 04:48:33 -0000 1.1
--- index.xml 29 Nov 2002 19:19:19 -0000 1.2
***************
*** 9,13 ****
<navigation>
! <prev href="assertions-impl"/>
</navigation>
</page>
--- 9,14 ----
<navigation>
! <prev href="junit-compat"/>
! <next href="assertions-impl/convert-existing-ext"/>
</navigation>
</page>
|
|
From: <fb...@us...> - 2002-11-29 19:19:22
|
Update of /cvsroot/ejuf/ejuf/src/xdocs/htdocs/assertions-impl/convert-existing-ext
In directory sc8-pr-cvs1:/tmp/cvs-serv14983/htdocs/assertions-impl/convert-existing-ext
Added Files:
index.xml
Log Message:
Updated information about JUnit and assertions class extension implementers
--- NEW FILE: index.xml ---
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE page PUBLIC "-//EJUF//Documentation DTD v1.0//EN"
"http://ejuf.sourceforge.net/dtd/page-1.0.dtd">
<page xmlns="http://ejuf.sourceforge.net/ejuf-1.0" depth="2">
<title>Converting existing JUnit extensions to EJUF extensions</title>
<body xmlns="http://www.w3.org/1999/xhtml">
<p>It really is quite easy to convert existing JUnit extensions.
Especially if they extend TestCase.
</p>
<p>The easiest way to do this is to create a new interface and class
paid which both extend some EJUF interfaces and classes.
</p>
<p>As an example, we will convert XMLUnit's XMLTestCase to an
XMLTestCaseWrapperAssertions in EJUF. If you cannnot wait and
must see the converted class, take a look at the
<code>ejuf.ext.assertions.XMLTestCaseWrapperAssertions</code> class.
</p>
<h2>Creating the interface to XMLTestCase</h2>
<p>
First off, we will start by creating the interface to the
XMLTestCase. Take a look at this:
</p>
<java xmlns="http://ejuf.sourceforge.net/ejuf-1.0">
package org.custommonkey.xmlunit.ext.ejuf;
public interface <link>ejuf/ext/assertions/XMLTestCaseWrapperAssertions</link> extends <link>ejuf/assertions/Assertions</link>, XSLTConstants {
void assertXMLEqual(String s, Diff diff, boolean b);
...
}
</java>
<p>
What we have done here is to declare an interface that users of
XMLUnit will need to implement. This is the same kind of interface
than EqualityAssertions or FailureAssertions that EJUF provides
by default.
</p>
<h2>Creating the interface implementation</h2>
<p>
Next, we have to create an implementation of this interface which
provides the services to the users. Ideally, we want to do the
minimum amount of work which will bring us to the desired point
of functionnality ( lazy users :) ). So, we declare the type:
</p>
<java xmlns="http://ejuf.sourceforge.net/ejuf-1.0">
package org.custommonkey.xmlunit.ext.ejuf;
public class XMLTestCaseAssertionsImpl extends <link>ejuf/assertions/AssertionServices</link>
implements XMLTestCaseAssertions {
private static final XMLTestCase xmlTestCase = new XMLTestCase("null");
public void assertXMLEqual(String s, Diff diff, boolean b) {
xmlTestCase.assertXMLEqual(s, diff, b);
}
...
}
</java>
<p>
Notice that we have reused the XMLTestCase as-is. No modifications
were necessary. We only added a layer of indirection so that users
may call into the test case abstractly from any test instance.
</p>
<h2>Update implementation to generate events about assertions</h2>
<p>
Finally, the last thing to do is to implement the assertion
notification function. The following is a first draft of such
functionnality:
</p>
<java xmlns="http://ejuf.sourceforge.net/ejuf-1.0">
package org.custommonkey.xmlunit.ext.ejuf;
public class XMLTestCaseAssertionsImpl extends <link>ejuf/assertions/AssertionServices</link>
implements XMLTestCaseAssertions {
private final <link>ejuf/assertions/AssertionsRegistry</link> registry;
...
public XMLTestCaseAssertionsImpl(final <link>ejuf/assertions/AssertionsRegistry</link> registry) {
this.registry = registry;
}
public void assertXMLEqual(String s, Diff diff, boolean b) {
xmlTestCase.assertXMLEqual(s, diff, b);
registry.assertion(new AssertionError("Comparing differences: "
+ diff.toString()));
}
...
}
</java>
<p>
As you may have noticed, the part about the registry was added in
the XMLTestCaseAssertionsImpl. This means that the same
XMLTestCase can be used <strong>both</strong> by JUnit and by EJUF
users... This is an extra bonus for extension developers.
</p>
</body>
<navigation>
<prev href="assertions-impl"/>
</navigation>
</page>
|
|
From: <fb...@us...> - 2002-11-29 18:09:49
|
Update of /cvsroot/ejuf/ejuf/src/xdocs/htdocs/assertions-impl/convert-existing-ext In directory sc8-pr-cvs1:/tmp/cvs-serv30923/convert-existing-ext Log Message: Directory /cvsroot/ejuf/ejuf/src/xdocs/htdocs/assertions-impl/convert-existing-ext added to the repository |
|
From: <fb...@us...> - 2002-11-29 18:07:45
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/mocks
In directory sc8-pr-cvs1:/tmp/cvs-serv29411/tests/ejuf/mocks
Modified Files:
MockTestRunner.java
Log Message:
Made the TestRunner interface manage it's own set of listeners.
Updated SingleTestRunnerTest with the new add/removeTestListener methods in TestRunner.
Updated the ant task and mock test runner accordingly.
Index: MockTestRunner.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/tests/ejuf/mocks/MockTestRunner.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** MockTestRunner.java 26 Nov 2002 03:55:58 -0000 1.3
--- MockTestRunner.java 29 Nov 2002 18:07:42 -0000 1.4
***************
*** 5,12 ****
import com.mockobjects.ExpectationValue;
import com.mockobjects.util.Verifier;
! import ejuf.framework.TestRunner;
! import ejuf.framework.Test;
! import ejuf.framework.TestSource;
! import ejuf.framework.TestResult;
public class MockTestRunner implements TestRunner, Verifiable {
--- 5,9 ----
import com.mockobjects.ExpectationValue;
import com.mockobjects.util.Verifier;
! import ejuf.framework.*;
public class MockTestRunner implements TestRunner, Verifiable {
***************
*** 32,35 ****
--- 29,38 ----
return expectedResult;
+ }
+
+ public void addTestListener(TestListener testListener) {
+ }
+
+ public void removeTestListener(TestListener testListener) {
}
|
|
From: <fb...@us...> - 2002-11-29 18:07:45
|
Update of /cvsroot/ejuf/ejuf/src/java/tests/ejuf/runners
In directory sc8-pr-cvs1:/tmp/cvs-serv29411/tests/ejuf/runners
Modified Files:
SingleTestRunnerTest.java
Log Message:
Made the TestRunner interface manage it's own set of listeners.
Updated SingleTestRunnerTest with the new add/removeTestListener methods in TestRunner.
Updated the ant task and mock test runner accordingly.
Index: SingleTestRunnerTest.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/tests/ejuf/runners/SingleTestRunnerTest.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** SingleTestRunnerTest.java 28 Nov 2002 18:34:29 -0000 1.4
--- SingleTestRunnerTest.java 29 Nov 2002 18:07:42 -0000 1.5
***************
*** 157,159 ****
--- 157,215 ----
}
}
+
+ public void testNotifiesMultipleListeners() {
+ MockTestListener[] listeners=new MockTestListener[2];
+ for (int i = 0; i < listeners.length; i++) {
+ listeners[i] = new MockTestListener();
+
+ listeners[i].setExpectedStartCalls(2);
+ listeners[i].setExpectedStartTest(mockTest);
+ listeners[i].setExpectedStartStatus(TestEvent.Status.NOT_RUN);
+
+ listeners[i].setExpectedEndCalls(2);
+ listeners[i].setExpectedEndTest(mockTest);
+ listeners[i].setExpectedEndStatus(TestEvent.Status.SUCCESS);
+
+ runner.addTestListener(listeners[i]);
+ }
+
+ runner.runTest(mockTest);
+ runner.runTest(mockTest);
+
+ for (int i = 0; i < listeners.length; i++) {
+ MockTestListener mockTestListener = listeners[i];
+ mockTestListener.verify();
+ }
+ }
+
+ public void testDoesNotNotifyRemovedListeners(){
+ MockTestListener[] listeners = new MockTestListener[2];
+ for (int i = 0; i < listeners.length; i++) {
+ listeners[i] = new MockTestListener();
+
+ listeners[i].setExpectedStartTest(mockTest);
+ listeners[i].setExpectedStartStatus(TestEvent.Status.NOT_RUN);
+
+ listeners[i].setExpectedEndTest(mockTest);
+ listeners[i].setExpectedEndStatus(TestEvent.Status.SUCCESS);
+
+ runner.addTestListener(listeners[i]);
+ }
+
+ listeners[0].setExpectedStartCalls(2);
+ listeners[0].setExpectedEndCalls(2);
+
+ listeners[1].setExpectedStartCalls(1);
+ listeners[1].setExpectedEndCalls(1);
+
+ runner.runTest(mockTest);
+
+ runner.removeTestListener(listeners[1]);
+ runner.runTest(mockTest);
+
+ for (int i = 0; i < listeners.length; i++) {
+ MockTestListener mockTestListener = listeners[i];
+ mockTestListener.verify();
+ }
+ }
}
|
|
From: <fb...@us...> - 2002-11-29 18:07:45
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/ext/ant
In directory sc8-pr-cvs1:/tmp/cvs-serv29411/core/ejuf/ext/ant
Modified Files:
EjufAntTask.java
Log Message:
Made the TestRunner interface manage it's own set of listeners.
Updated SingleTestRunnerTest with the new add/removeTestListener methods in TestRunner.
Updated the ant task and mock test runner accordingly.
Index: EjufAntTask.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/ext/ant/EjufAntTask.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** EjufAntTask.java 26 Nov 2002 03:55:57 -0000 1.5
--- EjufAntTask.java 29 Nov 2002 18:07:41 -0000 1.6
***************
*** 23,26 ****
--- 23,32 ----
}
+ public void addTestListener(TestListener testListener) {
+ }
+
+ public void removeTestListener(TestListener testListener) {
+ }
+
private void runTests(TestSource source) {
}
|
|
From: <fb...@us...> - 2002-11-29 18:07:44
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/framework
In directory sc8-pr-cvs1:/tmp/cvs-serv29411/core/ejuf/framework
Modified Files:
TestRunner.java
Log Message:
Made the TestRunner interface manage it's own set of listeners.
Updated SingleTestRunnerTest with the new add/removeTestListener methods in TestRunner.
Updated the ant task and mock test runner accordingly.
Index: TestRunner.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/framework/TestRunner.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TestRunner.java 26 Nov 2002 03:55:57 -0000 1.5
--- TestRunner.java 29 Nov 2002 18:07:41 -0000 1.6
***************
*** 1,5 ****
--- 1,21 ----
package ejuf.framework;
+ /**
+ * Strategy object for running a single test instance.
+ */
public interface TestRunner {
+ /**
+ * Runs the specified {@link Test} instance.
+ * <p>If the test instance implements {@link TestFixture}, the test runner
+ * is responsible for calling {@link TestFixture#setUp()} and
+ * {@link TestFixture#tearDown()}.</p>
+ * @param test The test instance to run.
+ * @return A {@link TestResult} which represents the result of running the
+ * test.
+ */
TestResult runTest(final Test test);
+
+ void addTestListener(TestListener testListener);
+
+ void removeTestListener(TestListener testListener);
}
|
|
From: <fb...@us...> - 2002-11-29 18:07:44
|
Update of /cvsroot/ejuf/ejuf/src/java/core/ejuf/runners
In directory sc8-pr-cvs1:/tmp/cvs-serv29411/core/ejuf/runners
Modified Files:
SingleTestRunner.java
Log Message:
Made the TestRunner interface manage it's own set of listeners.
Updated SingleTestRunnerTest with the new add/removeTestListener methods in TestRunner.
Updated the ant task and mock test runner accordingly.
Index: SingleTestRunner.java
===================================================================
RCS file: /cvsroot/ejuf/ejuf/src/java/core/ejuf/runners/SingleTestRunner.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** SingleTestRunner.java 28 Nov 2002 18:34:28 -0000 1.4
--- SingleTestRunner.java 29 Nov 2002 18:07:41 -0000 1.5
***************
*** 7,11 ****
public class SingleTestRunner implements TestRunner {
! private final TestListener parentListener;
private final List assertions = new LinkedList();
private TestEvent.Status testStatus;
--- 7,11 ----
public class SingleTestRunner implements TestRunner {
! private final Set testListeners = new HashSet();
private final List assertions = new LinkedList();
private TestEvent.Status testStatus;
***************
*** 17,21 ****
public SingleTestRunner(TestListener parentListener) {
! this.parentListener = parentListener;
}
--- 17,21 ----
public SingleTestRunner(TestListener parentListener) {
! addTestListener(parentListener);
}
***************
*** 71,74 ****
--- 71,82 ----
}
+ public void addTestListener(TestListener testListener) {
+ testListeners.add(testListener);
+ }
+
+ public void removeTestListener(TestListener testListener) {
+ testListeners.remove(testListener);
+ }
+
private TestEvent.Status checkTestStatus(Throwable exception) {
TestEvent.Status testStatus = null;
***************
*** 177,181 ****
*/
protected void fireStartTest(final TestEvent testEvent) {
! parentListener.startTest(testEvent);
}
--- 185,192 ----
*/
protected void fireStartTest(final TestEvent testEvent) {
! for (Iterator iterator = testListeners.iterator(); iterator.hasNext();) {
! TestListener testListener = (TestListener)iterator.next();
! testListener.startTest(testEvent);
! }
}
***************
*** 186,190 ****
*/
protected void fireEndTest(final TestEvent testEvent) {
! parentListener.endTest(testEvent);
}
}
--- 197,204 ----
*/
protected void fireEndTest(final TestEvent testEvent) {
! for (Iterator iterator = testListeners.iterator(); iterator.hasNext();) {
! TestListener testListener = (TestListener)iterator.next();
! testListener.endTest(testEvent);
! }
}
}
|