我正在寻找一种将TDD应用于会话Bean的方法。单元测试EJB
任何人都可以提供意见和链接如何进行单元测试?
如何使用JUnit来做到这一点?
P.S:我是新来的测试驱动开发和会话Bean。
我正在使用EJB v2。
我正在寻找一种将TDD应用于会话Bean的方法。单元测试EJB
任何人都可以提供意见和链接如何进行单元测试?
如何使用JUnit来做到这一点?
P.S:我是新来的测试驱动开发和会话Bean。
我正在使用EJB v2。
你不说你正在使用哪个版本的EJB。如果是EJB v3,请查看Ejb3Unit。从网站:
Ejb3Unit是一个JUnit的推广与能够执行自动的独立的JUnit测试 所有EJB 3.0符合Java EE的 项目。 由于容器测试方法的不足导致构建测试周期变短,因为不再需要容器部署,因此不再需要 。
不过,我会主张从EJB特有的功能中分离出来。这将允许您测试容器外的复杂功能,而不使用上述框架。大部分测试将测试POJO(普通的旧Java对象),而相对较少的测试将专注于持久性框架测试。
编辑:所以,如果你使用EJB V2,那么显然忽略第一点。然而,第二点仍然有效。
我目前使用apache openejb作为单元测试的嵌入式容器。虽然这是一个EJB3/JPA项目,但它对EJB2应该是一样的。为了引导容器在测试中,你只需要创建以后可以用它来查找EJB和数据源的InitialContext对象:
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
// a DataSource named "mysql"
props.put("mysql", "new://Resource?type=DataSource");
props.put("mysql.JdbcDriver", "com.mysql.jdbc.Driver");
props.put("mysql.JdbcUrl", "jdbc:mysql://localhost:3306");
props.put("mysql.JtaManaged", "true");
props.put("mysql.DefaultAutoCommit", "false");
props.put("mysql.UserName", "root");
props.put("mysql.Password", "root");
Context context = new InitialContext(props);
LocalInterface local = (LocalInterface)context.lookup(localInterfaceName + "BeanLocal");
DataSource ds = (DataSource)context.lookup("java:openejb/Resource/mysql");
编辑:有在“测试技术”部分更多的文档以http://openejb.apache.org/3.0/index.html。
你能否给我提供一个关于此教程的好教程的链接?似乎很有希望 – Attilah 2009-10-01 14:09:07
Mockrunner可以与MockEJB结合使用来编写基于EJB的应用程序的测试。
看一看这个
http://mockrunner.sourceforge.net/examplesejb.html
+1 - 为了您的最后两个建议,我已经很多年没有想过仙人掌。:) – 2009-09-29 15:09:08
其实,我没有使用仙人掌多年:) – 2009-09-29 16:10:43
我试图设置使用仙人掌,但我真的不明白!我觉得安装太困难了。我正在使用Eclipse和NetBeans。 – Attilah 2009-10-01 14:03:06