測試用例看起來就像產品代碼,對于您的 EJB, 通過 facade 模式,它們可以使用相同的 Java bean。
通過使用一個 Ant 腳本可以使測試自動化。
利用 JUnit 和 JUnitEE 進行單元測試的例子
這個部分向您展現了如何利用 JUnit 和 JUnitEE 測試框架的優勢對一個在 Rational Application Developer IDE 中開發的簡單的無狀態 session EJB 進行單元測試。這個 EJB 僅僅添加了兩個數字就返回這些數字的總和。盡管這只是一個微不足道的功能,但是它包含了闡明這個例子的所有必要條件。這個系列的第 3 部分提供了 EJB 如何在 Rational Application Developer 軟件內部構建和單元測試的逐步的示范。 [Page]
簡單地說,這個例子是一個無狀態 session bean 的單元測試。然而,您也可以利用 JUnit 和 JUnitEE 測試框架對其它類型的 EJB 進行單元測試。這里這個簡單的方法包含以下幾個步驟:
創建一個簡單的 Java bean 計數器。
為基本的計數器創建一個 EJB。
創建一個 EJB 客戶。
開發 JUnit 測試用例對 Java 應用軟件和這個計數器 EJB 進行測試。
創建一個 JUnitEE 測試模塊,并對它進行配置。
在 WebSphere Application Server 環境中部署并執行測試用例。
您可以下載這篇文章中所有例子的源代碼(請看 參考資源)。
步驟 1. 創建一個簡單的 Java bean 計數器
第一個例子是一個簡單的 Java 應用軟件,它添加了兩個數字并返回了它們的和。代碼 列表 2 顯示了這個類執行。
列表 2. 基本的 Calculator Java Bean 的執行
package calc;
public class BasicCalculator {
public double addTwoNumbers(double first, double second)
{
return first + second;
}
}
步驟2. 為基本的計數器創建一個 EJB
利用 Rational Application 開發者產生一個無狀態 bean 稱作 BasicCalculator。
代碼列表 3 包含一個 EJB 即將呈現的樣例。
BasicCalculatorBean EJB 類包含一個業務方法,addTwoNumbers,服務于計數器功能的。 這個業務方法添加在一個遠程的接口中,使客戶能夠訪問這個方法。EJB 可以是遠程的、分布的對象。Rational Application Developer IDE 產生的客戶端工件能夠很容易的對遠程目標進行訪問。測試應用軟件可能在一個分離的 Enterprise Archive (EAR) 中,因此我們利用遠程而不是本地接口來訪問 EJB。(本系列的第 3 部分顯示了如何利用 IDE 的智能指南創建客戶端工件)。
列表 3. Basic Calculator EJB 的實現
package ejbs;
/**
* Bean implementation class for Enterprise Bean: BasicCalculator
*/
public class BasicCalculatorBean implements javax.ejb.SessionBean {
private javax.ejb.SessionContext mySessionCtx; [Page]
public javax.ejb.SessionContext getSessionContext() {
return mySessionCtx;
}
public void setSessionContext(javax.ejb.SessionContext ctx) {
mySessionCtx = ctx;
}
public void ejbCreate() throws javax.ejb.CreateException {
}
public void ejbActivate() {
}
public void ejbPassivate() {
} public void ejbRemove() {
} public double addTwoNumbers(double first, double second) {
return first + second; }
}
步驟 3. 產生一個 EJB 客戶端
在這個步驟中,按照 Rational Application Developer 的智能指導產生客戶端工件。這些步驟在這個文章系列的第 3 部分將會有示范。
步驟 4. 開發 JUnit 測試用例來測試 Java 和計數器 EJB
當您實現完 Java Bean Calculator、 Basic Calculator EJB 以及客戶 EJB 之后,您就可以編寫 JUnit 測試用例了。
利用 JUnit 對 Java 應用軟件進行單元測試 這里,您可以利用 列表 1 中概述的 JUnit 測試結構的優勢來編寫三種對 BasicCalulator Java Bean 和 EJB 進行單元測試的方法。
列表 4 中的單元測試列舉了各種斷言方法來執行正面與反面的單元測試。它有以下幾種測試方法:
testSimpleAddition() 方法包含兩個論斷。第一個宣稱這個計數器實例對象不是空,就像它實際存在一樣。第二個驗證通過與期望值4 相比較,這個計數器準確地將2加上2。
testSimpleAdditionNotSame() 方法展示了負面的測試,確保兩個截然不同的值是不一樣的。也就是說,這兩個數字(2+2)的和不是等于5的。
testDesignedToFail() 方法論證了 JUnitEE 框架中一個失敗的測試用例看起來是什么樣的。在這個測試用例中,兩個自變量,1和1是通過 BasicCalculator 來相加的,然后再將所得的值與3相比較。這個測試失敗了。結果向您展示了在哪里以及為什么失敗了。
列表 4. Calc Java Bean 的 JUnit Test
package calc.test;
import calc.BasicCalculator; [Page]
import junit.framework.TestCase;
public class BasicCalculatorTest extends TestCase {
BasicCalculator aBasicCalculator = null;
/*
* Setup before each test case
*/
protected void setUp() throws Exception {
super.setUp();
aBasicCalculator = new BasicCalculator();
}
public void testSimpleAdditionNotSame() throws Exception {
double result = aBasicCalculator.addTwoNumbers(2, 2);
assertNotSame(\"2+2 does not = 5\", new Double(result), new Double(5));
}
public void testDesignedToFail() throws Exception {
double result = aBasicCalculator.addTwoNumbers(1, 1);
assertTrue(\"1 + 1 = 3\", result == 3);
}
public void testSimpleAddition() throws Exception {
assertTrue(\"Calculator instance is not null\", aBasicCalculator != null);
double result = aBasicCalculator.addTwoNumbers(2, 2);
assertTrue(\"2+2=4\", result == 4); }
}
文章來源于領測軟件測試網 http://www.k11sc111.com/