Author: julien(a)jboss.com
Date: 2007-10-09 18:30:12 -0400 (Tue, 09 Oct 2007)
New Revision: 8579
Modified:
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/TestDriverRunnerTests.java
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/driver/TestDriverRunner.java
Log:
if the test driver throws a runtime exception, translate it as a test failure
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-09
22:05:30 UTC (rev 8578)
+++
modules/test/trunk/unit/src/main/org/jboss/test/unit/runner/TestDriverRunnerTests.java 2007-10-09
22:30:12 UTC (rev 8579)
@@ -25,9 +25,13 @@
import org.jboss.unit.runner.impl.driver.TestDriverRunner;
import org.jboss.unit.runner.TestRunnerEventListener;
import org.jboss.unit.runner.TestRunnerEvent;
+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.EndTestEvent;
import org.jboss.unit.runner.event.StartTestEvent;
+import org.jboss.unit.runner.event.StartRunnerEvent;
+import org.jboss.unit.runner.event.EndRunnerEvent;
import org.jboss.unit.driver.TestDriver;
import org.jboss.unit.driver.DriverResponse;
import org.jboss.unit.driver.DriverCommand;
@@ -44,6 +48,7 @@
import java.util.ArrayList;
import static org.jboss.unit.api.Assert.*;
+import static org.jboss.unit.api.Assert.assertEquals;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -70,6 +75,7 @@
testTestDriverInvokeReturnsNull();
testTestDriverInvokeReturnsAnEndTestResponse();
testTestDriverInvokeReturnsAFailureResponse();
+ testTestDriverInvokeThrowsRuntimeException();
}
@@ -86,26 +92,18 @@
TestDriverImpl testDriver = new TestDriverImpl();
testDriver.info.addTest(new SimpleTestCaseInfo("Foo"));
TestDriverRunner runner = new TestDriverRunner(testDriver, new TestId());
-
Blah listener = new Blah();
runner.addListener(listener);
- // Check that we received an error
+ //
runner.run();
//
assertEquals(4, listener.events.size());
-
- //
- StartTestEvent startEvent = assertInstanceOf(listener.events.get(1),
StartTestEvent.class);
- assertEquals(new TestId("Foo"), startEvent.getTestId());
-
- //
- EndTestEvent endEvent = assertInstanceOf(listener.events.get(2),
EndTestEvent.class);
- assertEquals(new TestId("Foo"), endEvent.getTestId());
- TestFailure testFailure = assertInstanceOf(endEvent.getTestResult(),
TestFailure.class);
- Failure failure = testFailure.getFailure();
- assertEquals(FailureType.ERROR, failure.getType());
+ 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));
}
private static void testTestDriverInvokeReturnsAnEndTestResponse()
@@ -119,9 +117,18 @@
};
testDriver.info.addTest(new SimpleTestCaseInfo("Foo"));
TestDriverRunner runner = new TestDriverRunner(testDriver, new TestId());
+ Blah listener = new Blah();
+ runner.addListener(listener);
- // Check that we received an internal error
+ //
runner.run();
+
+ //
+ 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));
}
private static void testTestDriverInvokeReturnsAFailureResponse()
@@ -135,11 +142,45 @@
};
testDriver.info.addTest(new SimpleTestCaseInfo("Foo"));
TestDriverRunner runner = new TestDriverRunner(testDriver, new TestId());
+ Blah listener = new Blah();
+ runner.addListener(listener);
- // Check that we received an internal error
+ //
runner.run();
+
+ //
+ 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));
}
+ private static void testTestDriverInvokeThrowsRuntimeException()
+ {
+ TestDriverImpl testDriver = new TestDriverImpl()
+ {
+ public DriverResponse invoke(TestId id, DriverCommand command)
+ {
+ throw new RuntimeException();
+ }
+ };
+ testDriver.info.addTest(new SimpleTestCaseInfo("Foo"));
+ TestDriverRunner runner = new TestDriverRunner(testDriver, new TestId());
+ Blah listener = new Blah();
+ runner.addListener(listener);
+
+ //
+ runner.run();
+
+ //
+ 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));
+ }
+
private static class TestDriverImpl implements TestDriver
{
@@ -157,6 +198,36 @@
}
}
+ private static void assertStartRunnerEvent(TestRunnerEvent event)
+ {
+ assertInstanceOf(event, StartRunnerEvent.class);
+ }
+ private static void assertStartTestEvent(TestRunnerEvent event, TestId
expectedTestId)
+ {
+ StartTestEvent startEvent = assertInstanceOf(event, StartTestEvent.class);
+ assertEquals(expectedTestId, startEvent.getTestId());
+ }
+ private static void assertEndTestEvent(TestRunnerEvent event, TestId expectedTestId,
TestResult expectedResult)
+ {
+ EndTestEvent endEvent = assertInstanceOf(event, EndTestEvent.class);
+ assertEquals(expectedTestId, endEvent.getTestId());
+ if (expectedResult instanceof TestFailure)
+ {
+ TestFailure expectedTestFailure = (TestFailure)expectedResult;
+ TestFailure testFailure = assertInstanceOf(endEvent.getTestResult(),
TestFailure.class);
+ assertEquals(expectedTestFailure.getFailure().getType(),
testFailure.getFailure().getType());
+ }
+ else if (expectedResult instanceof TestSuccess)
+ {
+ TestSuccess expectedTestSuccess = (TestSuccess)expectedResult;
+ TestSuccess testSuccess = assertInstanceOf(endEvent.getTestResult(),
TestSuccess.class);
+ }
+ }
+
+ private static void assertEndRunnerEvent(TestRunnerEvent event)
+ {
+ assertInstanceOf(event, EndRunnerEvent.class);
+ }
}
Modified:
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/driver/TestDriverRunner.java
===================================================================
---
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/driver/TestDriverRunner.java 2007-10-09
22:05:30 UTC (rev 8578)
+++
modules/test/trunk/unit/src/main/org/jboss/unit/runner/impl/driver/TestDriverRunner.java 2007-10-09
22:30:12 UTC (rev 8579)
@@ -118,24 +118,27 @@
fireEvent(new StartTestEvent(testId, testCaseInfo));
//
- DriverResponse response = driver.invoke(testId, new
StartTestCommand(parametrization));
+ StartTestCommand command = new StartTestCommand(parametrization);
//
- TestResult result;
- if (response instanceof EndTestResponse)
+ TestResult result = null;
+
+ //
+ DriverResponse response = null;
+ try
{
- result = new TestSuccess(0);
+ response = driver.invoke(testId, command);
}
- else if (response instanceof FailureResponse)
+ catch (Exception e)
{
- FailureResponse failureResponse = (FailureResponse)response;
- Failure failure = failureResponse.getFailure();
+ Failure failure = new Failure("The test driver threw an unexpected
exception ", e, FailureType.ERROR);
result = new TestFailure(failure, 0);
}
- else
+
+ //
+ if (result == null)
{
- Failure failure = new Failure("The test driver returned an
unexpected response " + response, FailureType.ERROR);
- result = new TestFailure(failure, 0);
+ result = unwrap(response);
}
//
@@ -144,4 +147,23 @@
}
}
}
+
+ private TestResult unwrap(DriverResponse response)
+ {
+ if (response instanceof EndTestResponse)
+ {
+ return new TestSuccess(0);
+ }
+ else if (response instanceof FailureResponse)
+ {
+ FailureResponse failureResponse = (FailureResponse)response;
+ Failure failure = failureResponse.getFailure();
+ return new TestFailure(failure, 0);
+ }
+ else
+ {
+ Failure failure = new Failure("The test driver returned an unexpected
response " + response, FailureType.ERROR);
+ return new TestFailure(failure, 0);
+ }
+ }
}