国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 汶上县| 健康| 景宁| 五河县| 平度市| 威海市| 密云县| 张家口市| 新绛县| 社会| 潮安县| 漠河县| 津市市| 河南省| 博爱县| 华亭县| 平遥县| 德钦县| 霸州市| 南宁市| 明溪县| 漯河市| 邻水| 绵竹市| 沙田区| 阜南县| 新巴尔虎左旗| 大邑县| 松阳县| 上思县| 电白县| 盐源县| 平定县| 休宁县| 岳池县| 平南县| 桃园市| 九龙县| 余姚市| 化州市| 利辛县|