亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Windows > 正文

關于Windows 8 開發之測試代碼的使用方法

2019-11-28 03:37:44
字體:
來源:轉載
供稿:網友

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

注意:是先創建一個項目,然后再這個項目中添加測試項目,這樣符合我們在開發中需要對我們的項目進行測試的需求。

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

復制代碼
代碼如下:

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

注意以下事項:

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

b.測試方法必須位于使用 [TestMethod] 特性修飾的類中。運行測試時,將為每個測試類創建一個實例。將按未指定順序調用測試方法。

c.您可定義在每個模塊、每個類或每個方法前后調用的特定方法。

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

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

復制代碼
代碼如下:

namespace UnitTestLibraryTest
{
[TestClass]
public class UnitTest1
{
private int a;
private int b;</p><p> // 當前測試類運行第一個測試方法之前執行,類似于構造函數
[ClassInitialize]
public static void MyClassInit(TestContext context)
{

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

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

2.驗證測試是否在測試管理資源器中運行

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

復制代碼
代碼如下:

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

注意,Assert 類提供的若干靜態方法可用于驗證測試方法的結果。

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

3.向MyTestProject項目添加Rooter類

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

復制代碼
代碼如下:

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

 Rooter 類聲明一個構造函數和 SqareRoot estimator 方法。

  4).SqareRoot 方法只是一個最小實現,足以為測試設置測試基本結構。

4.將測試項目合并為應用程序項目

  1).將對 "MyTestProject"應用程序的引用添加到 UnitTestLibraryTest項目中。

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

  a.打開 UnitTest1.cs。

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

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

復制代碼
代碼如下:

[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).生成解決方案。

  新測試將顯示在測試資源管理器的“未運行的測試”節點中。

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

  您已設置測試和代碼項目,并驗證了您可在代碼項目中運行運行函數的測試。現在您可開始編寫真實測試和代碼。

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

  1).添加新測試:

復制代碼
代碼如下:

[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;
}

   提示:建議您不要更改已通過的測試。而是添加新測試,更新代碼以便測試通過,然后添加其他測試等。 當您的用戶更改其要求時,請禁用不再正確的測試。編寫新測試并使它們以相同的增量方式一次運行一個。 

2).在測試資源管理器中,選擇“全部運行”。

3).測試將不會通過。 RangeTest 未通過

提示:編寫測試后,立即驗證每個測試是否都將失敗。這幫助您避免易犯的錯誤,不會編寫從不失敗的測試。  

  4).增強受測代碼,以便新測試通過。將 Rooter.cs 中的 SqareRoot 函數更改為:


復制代碼
代碼如下:

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).生成解決方案,然后在測試資源管理器中,選擇“全部運行”。

  現在所有三個測試都將通過。

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

6.調用未通過的測試

  1).向 UnitTest1.cs 添加另一個測試: 

復制代碼
代碼如下:

[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).在測試資源管理器中,選擇“全部運行”。

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

   3).若要查看測試未通過的原因,請單步執行以下函數:

  a.在 SquareRoot 函數的開頭設置斷點。

  b.在未通過測試的快捷菜單上,選擇“調試選定的測試”。 當運行在斷點處停止時,請單步執行以下代碼。

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

復制代碼
代碼如下:

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;
}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本色道久久综合亚洲精品小说| 亚洲激情免费观看| 欧美午夜视频一区二区| 热久久这里只有精品| 色在人av网站天堂精品| 日韩精品免费电影| 欧美日韩性视频| 欧美视频中文在线看| 国产精品色午夜在线观看| 亚洲女人被黑人巨大进入| 国产日韩欧美日韩| 亚洲аv电影天堂网| 国产视频久久久久| 中文字幕日韩精品在线| 亚洲成人久久久久| 在线日韩第一页| 亚洲精品白浆高清久久久久久| 琪琪第一精品导航| 久久久久久久久久久免费| 亚洲第一中文字幕在线观看| 亚洲福利在线播放| 成人免费黄色网| 国产综合在线视频| 日韩免费观看视频| 在线播放日韩精品| 欧美性极品xxxx做受| 欧美一级黑人aaaaaaa做受| 国模gogo一区二区大胆私拍| 国产精品视频导航| 狠狠做深爱婷婷久久综合一区| 日韩欧美在线观看视频| 欧美成人sm免费视频| 一本久久综合亚洲鲁鲁| 久久精品99久久久久久久久| 国产一区二区三区在线| 国产成人精品久久二区二区91| 亚洲国产精久久久久久| 国产va免费精品高清在线观看| 8050国产精品久久久久久| 91国内产香蕉| 51午夜精品视频| 亚洲第一区在线| 久久亚洲精品网站| 久久婷婷国产麻豆91天堂| 亚洲永久免费观看| 精品性高朝久久久久久久| 国产精品免费在线免费| 亚洲一品av免费观看| 色偷偷偷亚洲综合网另类| 欧美精品情趣视频| 亚洲天堂av在线免费观看| 中文字幕av一区二区三区谷原希美| 97视频在线观看免费| 最新中文字幕亚洲| 欧美日韩国产麻豆| 美女视频黄免费的亚洲男人天堂| 久久99精品国产99久久6尤物| 91wwwcom在线观看| 久久精品中文字幕一区| 国产一区二区av| 久久精品国产久精国产思思| 欧美中文字幕第一页| 97福利一区二区| 国产91免费观看| 欧美激情视频一区二区三区不卡| 亚洲网站在线看| 欧美黄色免费网站| 国产精品亚发布| 青青草一区二区| 不卡av电影在线观看| 91sao在线观看国产| 国内精品在线一区| 国产精品羞羞答答| 萌白酱国产一区二区| 91精品国产91久久久| 欧美视频裸体精品| 国产精品入口免费视| 色哟哟网站入口亚洲精品| 亚洲二区中文字幕| 久久久av电影| 伊人久久久久久久久久久| 欧美人与性动交| 亚洲精品av在线播放| 亚洲最新av在线| 国产美女精品视频免费观看| 国产精品第8页| 美女黄色丝袜一区| 一本大道亚洲视频| 国产精品日韩在线一区| 国产女同一区二区| 国产一区二区美女视频| 久久亚洲综合国产精品99麻豆精品福利| 国产精品日日摸夜夜添夜夜av| 欧美制服第一页| 国产一区二区三区毛片| 亚洲第一男人av| 久久免费视频这里只有精品| 国产精品综合不卡av| 91色视频在线导航| 亚洲国产精品va在线看黑人| 姬川优奈aav一区二区| 国产精品一区二区久久久| 久久人人爽国产| 91黑丝在线观看| 欧美激情aaaa| 久久久免费精品视频| 久久综合伊人77777| 亚洲va电影大全| 精品日本美女福利在线观看| 97超级碰碰碰久久久| 亚洲国产又黄又爽女人高潮的| 亚洲激情在线视频| 亚洲欧美在线看| 国产欧美日韩视频| 国产成人高潮免费观看精品| 亚洲男人天堂2019| 91亚洲精品在线观看| 欧美激情综合色| 97精品视频在线播放| 亚洲国产精品va在线看黑人动漫| 亚洲欧美综合区自拍另类| 亚洲欧美国产一区二区三区| 国产欧美日韩综合精品| 久久福利视频导航| 九九久久久久99精品| 欧美成人午夜免费视在线看片| 国产成人aa精品一区在线播放| 欧美尺度大的性做爰视频| 中国china体内裑精亚洲片| 欧美激情亚洲激情| 久久av.com| 国产97在线|日韩| 亚洲午夜久久久久久久| 成人网欧美在线视频| 精品国产欧美成人夜夜嗨| 78色国产精品| 亚洲欧美激情四射在线日| 一区二区福利视频| 亚洲精品一区中文字幕乱码| 高清欧美性猛交| 45www国产精品网站| 国产精品欧美激情| 久久精品福利视频| 日韩免费在线看| 色久欧美在线视频观看| 色噜噜亚洲精品中文字幕| 欧美在线观看视频| 亚洲欧美日韩一区二区在线| 日韩在线播放视频| 国产亚洲免费的视频看| 亚洲精品aⅴ中文字幕乱码| 久久久999国产精品| 欧美日韩国产色视频| 日韩av在线直播| 日韩美女毛茸茸| 欧美高清性猛交| 人妖精品videosex性欧美| 久久久国产精品视频| 成人激情春色网| 日韩美女视频免费看| 欧美激情精品久久久久久免费印度| 操人视频在线观看欧美| 国产免费一区二区三区在线观看| 久久亚洲欧美日韩精品专区|