public class SampleSessionBean extends GenericSessionBean implements SessionBean
{
public void ejbCreate()
{
}
/** @ejbgen:remote-method */ public int doSomethingBoring()
{
return 5;
}
}
对于这个例子来说,测试用例是{UnitTestProject}/EJBTest.java,下面是它的一小段代码:
private SampleSessionHome lookupHome() throws NamingException {
Context ctx = getInitialContext();
// Lookup the bean's home using JNDI
Object home = ctx.lookup("ejb.SampleSessionRemoteHome");
return (SampleSessionHome) narrow(home, SampleSessionHome.class);
}
private Object narrow(Object ref, Class c) {
return PortableRemoteObject.narrow(ref, c);
}
private Context getInitialContext() throws NamingException {
// Set up the environment properties
Hashtable h = new Hashtable();
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://localhost:7001");
return new InitialContext(h);
}
public void testEJB() throws Exception {
assertEquals( 5, lookupHome().create().doSomethingBoring() );
}
在我们的测试方法中,我们获得了服务器的初始环境,在JNDI中查找home接口,缩小它,调用创建方法,然后调用bean方法。也可以使用Start按钮来运行该测试。
对内部可测试组件进行单元测试
一些WebLogic Workshop组件只能从服务器容器内部访问。最明显的例子是控件,只能由框架初始化它,而且只能被包含其他控件、JWS、JPF和JPD类在内的组件使用。因此,为了高效地对这些种类的组件进行单元测试,您的测试需要运行在服务器进程内部。
Cactus
针对外部可测试组件运行时,需要把JUnit测试运行为发送HTTP请求给组件的客户端进程。为了在服务器容器内部运行JUnit测试,您需要使用Cactus框架,它是一个免费的开源框架,是Apache Jakarta项目的一部分。Cactus Web站点包含了关于JUnit客户端如何连接到服务器,然后使测试运行的详细信息。下面,我将对该机制做一些总结。
当编写您想要使用Cactus运行在服务器内部的JUnit测试时,您通常想要扩展ServletTestCase,而非扩展TestCase。另外,您可以让您的suite()方法返回一个ServletTestSuite的实例。当您在您的测试上运行客户端JUnit进程时,它将检测到这是一个服务器端的测试,并发送HTTP请求给您指定的URL。在服务器上,Cactus接收到请求,创建您的测试类的一个实例,然后运行测试。接着,它把结果返回给JUnit客户端进程,该进程显示它们的时候就好像是运行标准的JUnit测试一样。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31119-10.html
美利坚万岁
谁都想要和平
赶上时代机遇
不清楚生产环境和流程