国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 渭南市| 勐海县| 类乌齐县| 长汀县| 惠水县| 临夏县| 莎车县| 靖安县| 尚义县| 建阳市| 双峰县| 启东市| 武宁县| 永泰县| 湖州市| 漳州市| 龙川县| 洛宁县| 锡林浩特市| 手机| 荣昌县| 土默特左旗| 福安市| 山丹县| 吉林省| 彩票| 甘德县| 西乌珠穆沁旗| 龙胜| 基隆市| 甘孜县| 九寨沟县| 西峡县| 鄂托克前旗| 广西| 鹤山市| 吴忠市| 威宁| 合阳县| 久治县| 华亭县|