Obtaining server-side resource in suite() method using junit.textui.TestRunner
"Nicholas Dierauf" <[email protected]>
| Newsgroups | gmane.comp.jakarta.cactus.user |
|---|---|
| Message-ID | <CFF3C71613AD464B97B9BA232E24617203BB046F@msgusawmb01.ads.autodesk.com> |
Hi,
In order to set up a suite of tests to be executed client-side, I wish
to access a server-side resource in my suite() method. This works fine
when I run the test from my browser using ServletTestRunner, but I get a
"java.lang.reflect.InvocationTargetException" when I attempt to run from
a different jvm, ie with junit.textui.TestRunner.
Is it possible to access server-side resources in the suite() method
when executed from junit.textui.TestRunner? (Please see below for some
sample code.)
Btw, I have a similar problem when I attempt to set up server-side
fixtures in my suite() method by using a TestSetup wrapper and
junit.textui.TestRunner. This works fine from browser ServletTestRunner.
I have a sinking suspicion that this may have to do with the issue in
this thread http://tinyurl.com/cfj2z (Serializing test case classes),
but I'd appreciate any feedback.
Thanks in advance,
Nick.
Here is the sample code. Some details have been left out for brevity. In
this example, I want the test to run differently depending on the
environment. Because the system property "servertype" is not defined in
the textui JVM environment, I get the Exception.
public MyTest(String environment) {
super("testSomething ");
this.environment = environment;
}
public static Test suite() throws Exception {
ServletTestSuite suite = new ServletTestSuite();
boolean isProd = isProd();
if (isProd) {
suite.addTest(new MyTest("PROD01"));
}
else {
suite.addTest(new MyTest("STAGE"));
}
return suite;
}
private static boolean isProd() {
return (System.getProperty("servertype").equals("prd"));
}
public void beginSomething(WebRequest theRequest) throws Exception {
...
}
public void testSomething() {
...
}
Here is the stack-trace:
java.lang.reflect.InvocationTargetException at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)Caused by: java.lang.NullPointerException at
com.adsk.ws.externalservices.evolution.MyTest.isProd(MyTest.java:99) at
com.adsk.ws.externalservices.evolution.MyTest.suite(MyTest.java:78) ...
7 more