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

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

24.5.在測試前后運(yùn)行代碼

2024-04-27 13:52:35
字體:
供稿:網(wǎng)友
24.5.1. 問題
我需要在每個(gè)測試用例測試前或測試后運(yùn)行特定的代碼。
24.5.2. 解決辦法
重寫TestCase類的setUp和tearDown方法。
24.5.3. 討論
默認(rèn)情況下,每個(gè)TestCase中的測試方法都會在自己的TestCase實(shí)例中運(yùn)行。如果多個(gè)測試方法需要同一個(gè)系統(tǒng)狀態(tài)或數(shù)據(jù),你可以使用setUp方法統(tǒng)一進(jìn)行設(shè)置而不用在每個(gè)測試開始前顯式調(diào)用某個(gè)設(shè)置方法。同理,如果需要在每個(gè)測試后清理某個(gè)對象或測試斷言,無論是否有斷言失敗或錯(cuò)誤,tearDown方法必須被運(yùn)行。請切記一旦有斷言失敗或產(chǎn)生錯(cuò)誤,測試方法將會停止執(zhí)行。tearDown方法還有點(diǎn)好處就是如果測試使用到外部資源或?qū)ο蟮脑捒梢赃M(jìn)行釋放。

setUp方法很常用,比如用來保持當(dāng)前正常狀態(tài)數(shù)據(jù)到系統(tǒng)中。對于復(fù)雜的測試,可能需要掛接多個(gè)對象或連接到外部資源。如要在測試之前創(chuàng)建代碼,像下面那樣重寫setUp方法:
+展開
-ActionScript
override public function setUp():void
{}

你可以在這里放置任何代碼,包括斷言。如果某些資源或?qū)ο蟛淮嬖诘脑挘趕etUp方法里使用斷言可直接快速取消測試。注意如果setUp方法內(nèi)出現(xiàn)斷言失敗或拋出異常,預(yù)訂的測試方法或tearDown方法都不會被調(diào)用。這是tearDown方法唯一不被調(diào)用的情況。

類似setUp,tearDown方法是在每個(gè)測試后運(yùn)行,無論是否有失敗斷言或異常??梢园阉斫獬蓆ry...catch...finally塊的finally部分。按這種理解,也就是說tearDown方法并不是必需的。

請記住默認(rèn)下每個(gè)測試方法都是運(yùn)行在自己的TestCase實(shí)例中,這就意味著類變量將被設(shè)置為實(shí)例值,取消之前測試方法所作的修改。常見的如tearDown方法包括執(zhí)行每個(gè)測試方法運(yùn)行后生成的貢獻(xiàn)斷言或?qū)ν獠抠Y源的釋放,比如斷開Socket。要在每個(gè)測試方法后面運(yùn)行代碼,像下面那樣重寫tearDown方法:
+展開
-ActionScript
override public function tearDown():void
{}

下面的代碼演示每個(gè)測試方法何時(shí)運(yùn)行,調(diào)用setUp,測試代碼和tearDown方法:
+展開
-ActionScript
package
{
import flexunit.framework.TestCase;
public class SetUpTearDownTest extends TestCase
{
private var _phase:String = "instance";
override public function setUp():void
{
updatePhase("setUp()");
}
override public function tearDown():void
{
updatePhase("tearDown()");
}
public function testOne():void
{
updatePhase("testOne()");
}
public function testFail():void
{
updatePhase("testFail()");
fail("testFail() always fails");
}
public function testError():void
{
updatePhase("testError()");
this["badPropertyName"] = "newValue";
}
private function updatePhase(phase:String):void
{
trace("Running test", methodName, "old phase", _phase,
"new phase", phase);
_phase = phase;
}
}
}

輸出信息如下:
Running test testFail old phase instance new phase setUp()
Running test testFail old phase setUp() new phase testFail()
Running test testFail old phase testFail() new phase tearDown()
Running test testError old phase instance new phase setUp()
Running test testError old phase setUp() new phase testError()
Running test testError old phase testError() new phase tearDown()
Running test testOne old phase instance new phase setUp()
Running test testOne old phase setUp() new phase testOne()
Running test testOne old phase testOne() new phase tearDown()

注意每個(gè)測試都以實(shí)例的_phase值開頭,無論是否有斷言失敗或異常,setUp和tearDown 方法都被執(zhí)行。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久治县| 秭归县| 黄骅市| 毕节市| 姜堰市| 凌源市| 蒲江县| 年辖:市辖区| 庆云县| 赫章县| 西吉县| 云林县| 浑源县| 石家庄市| 黎川县| 山西省| 扶沟县| 石城县| 浙江省| 双流县| 和林格尔县| 茶陵县| 沁阳市| 桃园市| 上杭县| 桑日县| 奈曼旗| 九江市| 新乡市| 荆门市| 台江县| 武穴市| 柞水县| 鞍山市| 从江县| 沙河市| 天长市| 汶川县| 石屏县| 台中市| 任丘市|