我正在尋找一種將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