h.put(Context.PROVIDER_URL, "t3://localhost:7001");
return new InitialContext(h);
}
public void testEJB() throws Exception {
assertEquals( 5, lookupHome().create().doSomethingBoring() );
}
...
如果您查看该测试的源代码,您会注意到,它实际上与非Cactus的版本完全相同。它扩展的是ServletTestCase ,而非TestCase ,而且有一个不同的类和包名。它还在它的getInitialContext()方法中打印出一些调试输出,这样您就可以了解到,它的确是运行在服务器VM内部,但是没有其他方面的变化。一定要在试着运行测试之前构建和部署应用程序,以确保测试类被真正地部署到服务器。
Java控件(JCS、JCX)
控件或许是WebLogic Workshop 8.1中最难测试的组件,因为用户代码不会直接实例化它们。相反,您必须允许框架让支持控件的组件类型(比如JPF)使用控件实例。下面的例子说明了如何做到这一点。
Java控件示例
在这个例子中,为了能够接收Cactus请求的Java Page Flow,我把一个抽象基类AbstractUnitTestController包含在内。为了测试控件,您需要使用JUnit测试方法创建一个子类。因为您的测试用例扩展了AbstractUnitTestController,它实际上是一个页面流控制器,所以服务器框架将给您的类一个控件实例来使用。此外,您可以在IDE中使用您已经熟悉的设计工具编写您的测试,这可以简化测试的创建过程。注意,您可以轻松地把这个页面流改编成测试任何为WebLogic Platform应用程序而开发的Java控件。
我们将要测试的控件是一个在前面的web服务例子中自动生成的服务控件。该例子还演示了一种测试不需要构建Java客户端代理的web服务的不同方法。Workshop将自动使服务控件与web服务保持同步。这个UnitTestingWeb}/jws/JWSToTestControl.jcx 控件的一个代码片断如下所示:
public intece JWSToTestControl extends com.bea.control.ControlExtension, com.bea.control.ServiceControl {
public int square (int i);
public java.lang.String hello ();
static final long serialVersionUID = 1L;
}
...
测试{UnitTestingWeb}/jws/newpageflow1/ ServiceControlTest.jpf的代码如下所示:
public class ServiceControlTest extends AbstractUnitTestController {
/** @common:control */
private jws.JWSToTestControl jwsToTestControl;
/** @jpf:action */
protected Forward begin() throws ServletException {
return super.begin();
}
public static Test suite() {
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31119-12.html
其实还有一个更好的解决方案
晚安