黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

使用Flash Builder 4進(jìn)行Unit Test

系統(tǒng) 2163 0

作為一個(gè)新特性,F(xiàn)lash Builder 4已經(jīng)集成FlexUnit Test,使用起來(lái)很方便,下面我們就以一個(gè)Case來(lái)談?wù)勗鯓釉贔lash Builder 4中進(jìn)行Unit Test。

1. 準(zhǔn)備工作。首先用Flash Builder 4在一個(gè)Flex工程新建一個(gè)類(lèi)。如下面代碼。

    package
{
	import flash.utils.ByteArray;

	public class ObjectUtil
	{
		public static function clone(source:*):* 
		{
			var ba:ByteArray = new ByteArray();
			ba.writeObject(source);
			ba.position = 0;
			return ba.readObject();
		}
	}
}
  

這個(gè)工具類(lèi)實(shí)現(xiàn)對(duì)象的深度clone,也就是被復(fù)制的目標(biāo)對(duì)象不再是源對(duì)象的參照,改變目標(biāo)對(duì)象不會(huì)影響源對(duì)象。因?yàn)锳ctionScript 3.0和Flex Framework中有不少內(nèi)置對(duì)象,如Date、Object、Array、ArrayColection、BitmapData等,情況比較多,單元測(cè)試正好派上用場(chǎng)。

2. 創(chuàng)建新的FlexUnit TestCase 類(lèi)。

選擇該類(lèi)>新建>TestCase 類(lèi),打開(kāi)下圖所示對(duì)話(huà)框,一般按默認(rèn)設(shè)置就行了。如下圖所示。

選擇應(yīng)為其生成測(cè)試方法存根的方法。如下圖所示。

Flash Builder 4將自動(dòng)為我們生成TestCase類(lèi)和主程序文件的結(jié)構(gòu)代碼。在TestCase類(lèi)中,已經(jīng)有一個(gè)沒(méi)有實(shí)現(xiàn)的測(cè)試方法testClone,為方便錯(cuò)誤跟蹤,我們修改成了四個(gè)測(cè)試方。如下代碼所示。

    public function testCloneObject():void
{
	var obj:Object= {name:"Jim", age:25}
	var newObj:Object = ObjectUtil.clone(obj);
	newObj.age = 28;
	assertObjectEquals(obj, {name:"Jim", age:25});
}

public function testCloneArray():void
{
	var arr:Array= [1,2];			
	var newArr:Array = ObjectUtil.clone(arr);
	newArr[1] = 3;
	assertObjectEquals(arr, [1,2]);
}

public function testCloneCollection():void
{
	var ac:ArrayCollection = new ArrayCollection([
		{name:"Jim", age:28},
		{name:"Tom", age:30}
	]);
	
	var newAC:ArrayCollection = ObjectUtil.clone(ac);
	newAC.getItemAt(0).name = "Kite";
	assertEquals(ac.getItemAt(0).name, "Jim");
}

public function testBitmapData():void
{
	var bmd:BitmapData = new BitmapData(100,100,false);
	bmd.setPixel(10,10,0xFF0000);
	var newBMD:BitmapData = ObjectUtil.clone(bmd);
	newBMD.setPixel(10,10,0x0000FF);;
	assertEquals(bmd.getPixel(10,10), 0xFF0000);
}
  

注意,在FlexUnit 1 test中, 每個(gè)你創(chuàng)建的方法的方法名都必須以test開(kāi)頭, 這個(gè)是為了讓測(cè)試運(yùn)行器辨識(shí)需要測(cè)試的方法。

3. 創(chuàng)建新的FlexUnit Test Suite 類(lèi)。選擇該類(lèi)>新建>TestSuie類(lèi),打開(kāi)對(duì)話(huà)框,輸入TestSuie類(lèi)名,選擇目標(biāo)測(cè)試類(lèi)和方法。如下圖所示。

4. 修改主程序。

打開(kāi)主程序mxml,做如下修改。

    <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
	xmlns:s="library://ns.adobe.com/flex/spark" 
	xmlns:flexui="flexunit.flexui.*"
	xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="800" minHeight="600"
	creationComplete="creationCompleteHandler()">	
	<fx:Script>
	<![CDATA[
		import flexUnitTests.UtilSuite;
		
		private var flexUnitTests_UtilSuite_obj:flexUnitTests.UtilSuite;
		
		protected function creationCompleteHandler():void
		{
			testRunner.test = UtilSuite.suite();
			testRunner.startTest();
		}
	]]>
	</fx:Script>
	
	<flexui:TestRunnerBase id="testRunner"
		width="100%" height="100%"/>

</s:Application>
  

5. 運(yùn)行測(cè)試程序。

結(jié)果testBitmapData()方法測(cè)試失敗:TypeError: Error #1034: 強(qiáng)制轉(zhuǎn)換類(lèi)型失敗:無(wú)法將 Object@b9b5fb1 轉(zhuǎn)換為 flash.display.BitmapData。

6. 修改錯(cuò)誤。其實(shí),BitmapData有自己的clone方法,我們只要將這個(gè)方法整合到ObjectUtil類(lèi)中就行了。

打開(kāi)ObjectUtil類(lèi),添加一個(gè)條件,最終代碼如下。

    public static function clone(source:*):* 
{
	var ba:ByteArray = new ByteArray();
	ba.writeObject(source);
	ba.position = 0;
	if(source is BitmapData)
	{
		return (source as BitmapData).clone();
	}
	return ba.readObject();
}
  

回到第五步再進(jìn)行測(cè)試,直到全部方法都通過(guò)。

另外,F(xiàn)lexUnit 4 test所用代碼更簡(jiǎn)單,還支持元數(shù)據(jù)標(biāo)簽。通過(guò)運(yùn)行方式>FlexUnit 測(cè)試,可以直接生成主程序代碼。FlexUnit 4 test的界面是總結(jié)性的,很簡(jiǎn)單,還有就是FlexUnit 面版,大家有空可以試一下。

使用Flash Builder 4進(jìn)行Unit Test


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論