濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 關(guān)于Windows 8 開發(fā)之測(cè)試代碼的使用方法

關(guān)于Windows 8 開發(fā)之測(cè)試代碼的使用方法

熱門標(biāo)簽:溫嶺地圖標(biāo)注 外呼系統(tǒng)打哪顯哪 行政區(qū)劃地圖標(biāo)注app 世界地圖標(biāo)注國(guó)家怎么畫 南寧銷售外呼系統(tǒng)廠家 金昆地圖標(biāo)注是干什么的 口碑好的電話機(jī)器人費(fèi)用 沈陽(yáng)高頻外呼防封系統(tǒng)哪家好 高德地圖標(biāo)注地點(diǎn)更改電話號(hào)碼

1.創(chuàng)建解決方案和單元測(cè)試項(xiàng)目
  1).“文件”菜單上選擇“新建”,然后選擇“新建項(xiàng)目”。
  2).在“新建項(xiàng)目”對(duì)話框中,展開“已安裝”、“Visual C#”,選擇“Windows Store”。然后從項(xiàng)目模板列表中選擇“空白應(yīng)用程序”。
  3).將項(xiàng)目命名為 MyTestProject,并確保選中“創(chuàng)建解決方案的目錄”。
  4).在解決方案資源管理器中,選擇解決方案名稱,從快捷菜單中選擇“添加”,然后選擇“新建項(xiàng)目”。
  5).在“新建項(xiàng)目”對(duì)話框中,展開“已安裝”、“Visual C#”,然后選擇“Windows 應(yīng)用商店”。然后從項(xiàng)目模板列表中選擇“單元測(cè)試庫(kù)(Windows Store 應(yīng)用程序)”。

注意:是先創(chuàng)建一個(gè)項(xiàng)目,然后再這個(gè)項(xiàng)目中添加測(cè)試項(xiàng)目,這樣符合我們?cè)陂_發(fā)中需要對(duì)我們的項(xiàng)目進(jìn)行測(cè)試的需求。

  6).在 Visual Studio 編輯器中打開 UnitTest1.cs。

復(fù)制代碼
代碼如下:

namespace UnitTestLibraryTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{/p> p> }
}
}

注意以下事項(xiàng):

a.每個(gè)測(cè)試都是使用 [TestMethod] 定義的。測(cè)試方法必須返回 void,并且不能具有任何參數(shù)。在類名前一行,加上[TestClass]的聲明.

b.測(cè)試方法必須位于使用 [TestMethod] 特性修飾的類中。運(yùn)行測(cè)試時(shí),將為每個(gè)測(cè)試類創(chuàng)建一個(gè)實(shí)例。將按未指定順序調(diào)用測(cè)試方法。

c.您可定義在每個(gè)模塊、每個(gè)類或每個(gè)方法前后調(diào)用的特定方法。

d.在文件頭部加入using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;的引用。

  7).測(cè)試前的初始化及測(cè)試后的清理。用法及代碼如下:

復(fù)制代碼
代碼如下:

namespace UnitTestLibraryTest
{
[TestClass]
public class UnitTest1
{
private int a;
private int b;/p> p> // 當(dāng)前測(cè)試類運(yùn)行第一個(gè)測(cè)試方法之前執(zhí)行,類似于構(gòu)造函數(shù)
[ClassInitialize]
public static void MyClassInit(TestContext context)
{

}
// 所有測(cè)試方法運(yùn)行完畢后執(zhí)行,類似于析構(gòu)函數(shù)
[ClassCleanup]
public static void MyClassEnd()
{
}/p> p> //每個(gè)測(cè)試方法運(yùn)行之前執(zhí)行
[TestInitialize]
public void Init()
{
a = 1;
b = 1;
}
//每個(gè)測(cè)試方法運(yùn)行之后執(zhí)行
[TestCleanup]
public void End()
{
a = 0;
b = 0;
}/p> p> }
}

注意:以上方法,方法名可以自定義,無返回值,除了[ClassInitialize]的那個(gè)函數(shù)有個(gè)TestContext的參數(shù)外,其他無參數(shù)。

2.驗(yàn)證測(cè)試是否在測(cè)試管理資源器中運(yùn)行

  1).在 UnitTest1.cs 文件的 TestMethod1 中插入一些測(cè)試代碼:

復(fù)制代碼
代碼如下:

[TestMethod]
public void AddTestMethod()
{
int a = 1;
int b = 2;
int sum = a+b;
Assert.AreEqual(3,sum);
}

注意,Assert 類提供的若干靜態(tài)方法可用于驗(yàn)證測(cè)試方法的結(jié)果。

  2).在“測(cè)試”菜單上,選擇“運(yùn)行”,然后選擇“全部運(yùn)行”。
  將生成并運(yùn)行測(cè)試項(xiàng)目。隨即顯示“測(cè)試資源管理器”窗口,并且測(cè)試列出在“已通過的測(cè)試”下。窗口底部的“摘要”窗格將提供有關(guān)所選測(cè)試的其他詳細(xì)信息。
 

3.向MyTestProject項(xiàng)目添加Rooter類

  1).在“解決方案資源管理器”中,選擇“MyTestProject”項(xiàng)目名稱。從快捷菜單中選擇“添加”,然后選擇“類”。
  2).將類文件命名為 Rooter.cs。
  3).將以下代碼添加到 Rooter 類 Rooter.cs 文件中:

復(fù)制代碼
代碼如下:

public class Rooter
{
public Rooter()
{
}
public double SquareRoot(double x)
{
return 0.0;
}
}

 Rooter 類聲明一個(gè)構(gòu)造函數(shù)和 SqareRoot estimator 方法。

  4).SqareRoot 方法只是一個(gè)最小實(shí)現(xiàn),足以為測(cè)試設(shè)置測(cè)試基本結(jié)構(gòu)。

4.將測(cè)試項(xiàng)目合并為應(yīng)用程序項(xiàng)目

  1).將對(duì) "MyTestProject"應(yīng)用程序的引用添加到 UnitTestLibraryTest項(xiàng)目中。

  2).向 UnitTest1.cs 文件添加 using 語(yǔ)句:

  a.打開 UnitTest1.cs。

  b.在 using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 行下添加代碼:using MyTestProject;

  3).添加使用 Rooter 函數(shù)的測(cè)試。將下列代碼添加到 UnitTest1.cs:

復(fù)制代碼
代碼如下:

[TestMethod]
public void BasicTest()
{
Rooter rooter = new Rooter();
double expected = 0.0;
double actual = rooter.SquareRoot(expected * expected);
double tolerance = .001;
Assert.AreEqual(expected, actual, tolerance);
}

  4).生成解決方案。

  新測(cè)試將顯示在測(cè)試資源管理器的“未運(yùn)行的測(cè)試”節(jié)點(diǎn)中。

  5).在測(cè)試資源管理器中,選擇“全部運(yùn)行”。 已通過基本測(cè)試

  您已設(shè)置測(cè)試和代碼項(xiàng)目,并驗(yàn)證了您可在代碼項(xiàng)目中運(yùn)行運(yùn)行函數(shù)的測(cè)試?,F(xiàn)在您可開始編寫真實(shí)測(cè)試和代碼。

5.以迭代方式增加測(cè)試并使這些測(cè)試通過。

  1).添加新測(cè)試:

復(fù)制代碼
代碼如下:

[TestMethod]
public void RangeTest()
{
Rooter rooter = new Rooter();
for (double v = 1e-6; v 1e6; v = v * 3.2)
{
double expected = v;
double actual = rooter.SquareRoot(v * v);
double tolerance = ToleranceHelper(v);
Assert.AreEqual(expected, actual, tolerance);
}
}/p> p> private double ToleranceHelper(double expected)
{
return expected / 3.2;
}

   提示:建議您不要更改已通過的測(cè)試。而是添加新測(cè)試,更新代碼以便測(cè)試通過,然后添加其他測(cè)試等。 當(dāng)您的用戶更改其要求時(shí),請(qǐng)禁用不再正確的測(cè)試。編寫新測(cè)試并使它們以相同的增量方式一次運(yùn)行一個(gè)。 

2).在測(cè)試資源管理器中,選擇“全部運(yùn)行”。

3).測(cè)試將不會(huì)通過。 RangeTest 未通過

提示:編寫測(cè)試后,立即驗(yàn)證每個(gè)測(cè)試是否都將失敗。這幫助您避免易犯的錯(cuò)誤,不會(huì)編寫從不失敗的測(cè)試。  

  4).增強(qiáng)受測(cè)代碼,以便新測(cè)試通過。將 Rooter.cs 中的 SqareRoot 函數(shù)更改為:


復(fù)制代碼
代碼如下:

public double SquareRoot(double x)
{
double estimate = x;
double diff = x;
while (diff > estimate / 1000)
{
double previousEstimate = estimate;
estimate = estimate - (estimate * estimate - x) / (2 * estimate);
diff = Math.Abs(previousEstimate - estimate);
}
return estimate;
}

  5).生成解決方案,然后在測(cè)試資源管理器中,選擇“全部運(yùn)行”。

  現(xiàn)在所有三個(gè)測(cè)試都將通過。

  提示:通過添加測(cè)試的方式一次性開發(fā)代碼。確保所有測(cè)試在每次迭代后都通過。

6.調(diào)用未通過的測(cè)試

  1).向 UnitTest1.cs 添加另一個(gè)測(cè)試: 

復(fù)制代碼
代碼如下:

[TestMethod]
public void NegativeRangeTest()
{
string message;
Rooter rooter = new Rooter();
for (double v = -0.1; v > -3.0; v = v - 0.5)
{
try
{
// Should raise an exception:
double actual = rooter.SquareRoot(v);/p> p> message = String.Format("No exception for input {0}", v);
Assert.Fail(message);
}
catch (ArgumentOutOfRangeException ex)
{
continue; // Correct exception.
}
catch (Exception e)
{
message = String.Format("Incorrect exception for {0}", v);
Assert.Fail(message);
}
}
}

  2).在測(cè)試資源管理器中,選擇“全部運(yùn)行”。

  測(cè)試將不會(huì)通過。在測(cè)試資源管理器中選擇測(cè)試名稱。將突出顯示失敗的斷言。失敗消息將在測(cè)試資源管理器的細(xì)節(jié)窗格中可見。NegativeRangeTests 未通過。

   3).若要查看測(cè)試未通過的原因,請(qǐng)單步執(zhí)行以下函數(shù):

  a.在 SquareRoot 函數(shù)的開頭設(shè)置斷點(diǎn)。

  b.在未通過測(cè)試的快捷菜單上,選擇“調(diào)試選定的測(cè)試”。 當(dāng)運(yùn)行在斷點(diǎn)處停止時(shí),請(qǐng)單步執(zhí)行以下代碼。

  c.向 Rooter 方法添加代碼以捕獲異常,將SquareRoot方法修改如下(對(duì)x進(jìn)行判斷捕獲異常):

復(fù)制代碼
代碼如下:

public double SquareRoot(double x)
{
if (x 0.0)
{
throw new ArgumentOutOfRangeException();
}
double estimate = x;
double diff = x;
while (diff > estimate / 1000)
{
double previousEstimate = estimate;
estimate = estimate - (estimate * estimate - x) / (2 * estimate);
diff = Math.Abs(previousEstimate - estimate);
}
return estimate;
}

  在測(cè)試資源管理器中,選擇“全部運(yùn)行”以測(cè)試已糾正的方法,并確保您未引入回歸測(cè)試。所有測(cè)試都將通過。

標(biāo)簽:中山 沈陽(yáng) 煙臺(tái) 焦作 撫順 中衛(wèi) 防封 石嘴山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于Windows 8 開發(fā)之測(cè)試代碼的使用方法》,本文關(guān)鍵詞  關(guān)于,Windows,開,發(fā)之,測(cè)試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于Windows 8 開發(fā)之測(cè)試代碼的使用方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于關(guān)于Windows 8 開發(fā)之測(cè)試代碼的使用方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    北海市| 福清市| 佳木斯市| 行唐县| 慈溪市| 桃江县| 兰溪市| 东至县| 望都县| 郑州市| 河西区| 阳春市| 东丽区| 利川市| 灵寿县| 玉环县| 苏州市| 苏尼特左旗| 闻喜县| 化德县| 江陵县| 普安县| 措勤县| 凤山市| 循化| 阿拉善右旗| 金溪县| 台江县| 沾化县| 丹棱县| 濉溪县| 侯马市| 忻州市| 新闻| 辉县市| 海安县| 鄯善县| 瑞安市| 东乌珠穆沁旗| 温泉县| 泾源县|