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

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

24.6.測試用例之間共享測試數(shù)據(jù)

2024-04-27 13:52:36
字體:
供稿:網(wǎng)友
24.6.1. 問題
我想在多個測試用例之間共享數(shù)據(jù),包括簡單的或復(fù)雜的測試數(shù)據(jù)實(shí)例。
24.6.2. 解決辦法
創(chuàng)建能生成所需測試數(shù)據(jù)實(shí)例的工廠類。
24.6.3. 討論
一般的單元測試都有多個測試用例,彼此之間需共享相同或類似的測試數(shù)據(jù)。這些數(shù)據(jù)可能很簡單,比如是一個表示地址的object,也可能會很復(fù)雜,比如是以特定方式建立的相關(guān)實(shí)體的命令。不是通過剪貼和粘帖代碼或從外部載入資源來為每個TestCase創(chuàng)建和初始化對象,而是通過工廠來集中創(chuàng)建。這種集中處理數(shù)據(jù)的類型方式我們稱之為ObjectMother 設(shè)計(jì)模式。

簡單為例,ObjectMother是個簡單的工具類,只提供一個靜態(tài)方法用于創(chuàng)建需要的類型對象。

該方法通常有兩種形式:一種是需要傳遞一個參數(shù)值用于設(shè)置每個屬性,該方法只裝配對象。

第二種需要很少或不需要參數(shù),該方法為每個字段提供實(shí)際的智能的默認(rèn)值。如需要其他的對象類型,還可以使用較低級別的創(chuàng)建方法來生成更復(fù)雜的對象。

下面的例子是一個簡單的ObjectMother實(shí)現(xiàn):
+展開
-ActionScript
package
{
public class ObjectMother
{
public static const SHIPPING_ZIP_CODE:String = "0123";
public static function createAddress(line:String,
city:String, state:String, zip:String):Address
{
var address:Address = new Address();
address.line = line;
address.city = city;
address.state = state;
address.zip = zip;
return address;
}
public static function createAddressShipping():Address
{
return createAddress("123 A Street""Boston""MA",
SHIPPING_ZIP_CODE);
}
public static function createAddressBilling():Address
{
return createAddress("321 B Street""Cambridge""MA",
"02138");
}
public static function createOrder(lineItems:Array =
null):Order
{
var order:Order = new Order();
order.shippingAddress = createAddressShipping();
order.billingAddress = createAddressBilling();
for each (var lineItem:LineItem in lineItems)
{
addLineItemToOrder(order, lineItem);
}r
return order;
}
public static function addLineItemToOrder(order:Order,
lineItem:LineItem):void
{
order.addLineItem(lineItem);
}
}
}

從簡單的Address對象開始,定義了標(biāo)準(zhǔn)的參數(shù)化創(chuàng)建方法createAddress。兩個輔助類函數(shù)createAddressShipping和createAddressBilling,為TestCase方法提供快速方式訪問更充實(shí)的Address實(shí)例。輔助類函數(shù)建立在通用的createAddress函數(shù)值上。分層的創(chuàng)建策略可方便的創(chuàng)建出更復(fù)雜類型的對象,如這里的createOrder例子。

因?yàn)槊看握{(diào)用一個方法都會生成新的對象實(shí)例,所以由一個TestCase的修改不會影響到另一個TestCase。同一時(shí)刻,測試數(shù)據(jù)都被集中化處理,在ObjectMother中修改數(shù)據(jù)以支持新的測試可能會破壞現(xiàn)有的測試。相對于能輕松訪問到測試數(shù)據(jù)等優(yōu)點(diǎn)這只是一點(diǎn)小問題。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴中市| 鸡东县| 乌拉特前旗| 萨迦县| 达尔| 乐至县| 嘉义县| 旬阳县| 福贡县| 修武县| 崇左市| 靖安县| 无棣县| 平武县| 儋州市| 锡林浩特市| 增城市| 屏南县| 城固县| 朝阳市| 清丰县| 眉山市| 华阴市| 陵川县| 沙坪坝区| 喀喇沁旗| 佳木斯市| 新郑市| 高密市| 青岛市| 巨野县| 桦南县| 海伦市| 贵阳市| 新兴县| 肃北| 肥东县| 舟山市| 额济纳旗| 宣化县| 安塞县|