国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

24.3.創建FlexUnit測試用例

2024-04-27 13:52:35
字體:
來源:轉載
供稿:網友
24.3.1. 問題
我需要創建FlexUnit TestCase類實例測試代碼。
24.3.2. 解決辦法
創建TestCase子類,包含一個或多個以test開頭的方法。
24.3.3. 討論
當創建繼承自TestCase的ActionScript類,一般的命名方法是在類名后面添加Test作為后綴。

例如,如果被測試類叫RegExp,則TestCase類將被命名為RegExpTest。另外一般把TestCase類和被測試類放在同一個包中。如一個類叫做mx.core.UITextFormat,那TestCase類叫mx.core.UITextFormatTest.

舉例,創建一個繼承自TestCase的叫RegExpTest的ActionScript類,如下代碼:
+展開
-ActionScript
package
{
import flexunit.framework.TestCase;
public class RegExpTest extends TestCase
{}
}

FlexUnit框架使用反射確定TestCase的哪些方法可以運行。函數名稱以test開頭的指示該函數將包含要運行的代碼,例如這節的例子,添加方法testRegExp到RegExpTest:
+展開
-ActionScript
public function testRegExp():void
{}

下一步就是生成一個或多個斷言(assertions)。一個斷言就是以編程方式確認事實語句。一般的做法是通過一些操作將期望值與實際值相比較,返回結果。FlexUnit包含一系列斷言類型用于不同的測試情形。常見的斷言和函數如下:

assertEquals
比較==.

assertTrue
檢測條件是否為true.

assertNull
檢測條件是否為null.

assertStrictlyEquals
比較===.

FlexUnit還提供各種方便的斷言用于測試相反的條件,例如assertFalse和assertNotNull. (具體請看FlexUnit文檔中有關斷言的完整列表)

每個斷言函數都可接受可選的字符串作為第一個參數。如果斷言失敗時,該字符串將被作為默認的"expected X but was Y" 信息的前綴。編寫斷言時,請注意如果一個斷言失敗,剩下的的測試方法將不會被執行。

TestCase繼承自Assert,它定義了所有的斷言函數。這允許TestCase子類可直接調用斷言函數。

下面的代碼演示各種斷言方法,這些方法應該被添加到testRegExp函數中:
+展開
-ActionScript
var regExp:RegExp = new RegExp("a""i");
assertFalse(regExp.test("b"));
assertFalse("regExp doesn't match", regExp.test("b"));
assertNull(regExp.exec("b"));
assertNull("regExp doesn't match", regExp.exec("b"));
assertNotNull(regExp.exec("Apple"));
assertNotNull("regExp matches", regExp.exec("Apple"));
assertTrue(regExp.exec("Apple") is Array);
assertTrue("regExp exec returned an Array",
regExp.exec("Apple") is Array);
assertEquals("A", regExp.exec("Apple")[0]);
assertEquals("regExp matched A in Apple""A",
regExp.exec("Apple")[0]);
assertStrictlyEquals(regExp, regExp);
assertStrictlyEquals("regExp object identity", regExp, regExp);

你可以在TestCase中添加新的測試方法測試其他邏輯。習慣我們把每個測試方法集中測試特定的操作或任務。例如,當測試create, retrieve, update, 和delete操作時,每個操作都對應到它自己的測試方法,如testCreate, testRetrieve等等。這種方式中,如果這些斷言失敗,將會報告多個故障,這將幫助你快速診斷問題。

請注意,TestCase中的測試方法的執行順序是隨機的。每個測試方法創建它自己的數據,和其他已運行的測試無聯系。下面是完整的ActionScript文件:
+展開
-ActionScript
package
{
import flexunit.framework.TestCase;
public class RegExpTest extends TestCase
{
public function testRegExp():void
{
var regExp:RegExp = new RegExp("a""i");
assertFalse(regExp.test("b"));
assertFalse("regExp doesn't match", regExp.test("b"));
assertNull(regExp.exec("b"));
assertNull("regExp doesn't match", regExp.exec("b"));
assertNotNull(regExp.exec("Apple"));
assertNotNull("regExp matches", regExp.exec("Apple"));
assertTrue(regExp.exec("Apple") is Array);
assertTrue("regExp exec returned an Array",
regExp.exec("Apple") is Array);
assertEquals("A", regExp.exec("Apple")[0]);
assertEquals("regExp matched A in Apple""A",
regExp.exec("Apple")[0]);
assertStrictlyEquals(regExp, regExp);
assertStrictlyEquals(""regExp object identity", regExp, regExp);
}
}
}

最后一步就是添加新創建的TestCase到TestSuite,這放在下一節講解。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华容县| 隆子县| 荔浦县| 新建县| 保亭| 邯郸县| 宜丰县| 特克斯县| 尉犁县| 鄄城县| 南漳县| 铁岭县| 潮州市| 临江市| 蓝田县| 柳林县| 甘南县| 石渠县| 周至县| 湄潭县| 新邵县| 娄底市| 宁乡县| 山东省| 朝阳县| 名山县| 湖口县| 阿拉善左旗| 金昌市| 滁州市| 广西| 石门县| 米林县| 屏南县| 沅江市| 富阳市| 突泉县| 湄潭县| 桐城市| 新绛县| 图木舒克市|