搜尋
首頁運維windows維詳解Windows 8 開發之測試程式碼的使用教學課程

本篇文章介紹了Windows 8 開發之測試程式碼的使用方法。需要的朋友參考下

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 MyClass
End
()
        { 
        }</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」專案名稱。從快捷選單中選擇“新增”,然後選擇“類別”。   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 
Range
Test()
        {
            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 d
if
f = x;
            
while
 (diff > estimate / 1000)
            {
                double 
prev
iousEstimate = 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;
        }

  在测试资源管理器中,选择“全部运行”以测试已纠正的方法,并确保您未引入回归测试。所有测试都将通过。

【相关推荐】

1. Windows7下的Java开发环境搭建步骤(图解)

2. Windows系统下安装Ulipad编辑器

3. 使用Python开发windows桌面程序

4. 教你如何在Windows环境下安装python2和python3两个版本

以上是詳解Windows 8 開發之測試程式碼的使用教學課程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具