win10 UWP 單元測試 WPF 單元測試異步測試

我們在寫代碼的時候不能保證我們寫出來的代碼是正確的,所以我們經常要單元測試。

單元測試和重構都是在做完一個小小函數一般就要進行一次,越早做就越好,可以比較早發現問題,這時我們還記得我們寫的內容,不過比重構好的是,重構我們經常不知道要叫什麼名字,而單元測試反而就比較簡單。

右擊解決方案,添加新項目

C#->Windows->通用->單元測試應用

命名我是叫 測試

在新建單元測試右擊引用

把工程引用

打開測試項目

一般測試哪個類我就會新建一個類名稱和要測試類相同,類裏面函數和要測試函數名相同。

我在做一個windows Markdown,裏面有函數把剪貼的文本覆蓋Textbox選文本,我不知道這個函數寫的是不是對,於是我就在單元測試,新建一個類

測試函數所在的類是winmain,所以在單元測試新建一個類winmain

在新建類加上

using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;

最新版 是 using Microsoft.VisualStudio.TestTools.UnitTesting;

在類定義前添加特性,如下:

[TestClass]

只有在類添加這個特性,這個類纔可以做測試。

在類裏面加函數 clipboard_substitution 函數需要在函數前添加特性,如下代碼。添加了特性就是告訴vs,我就是測試函數,你可以運行我。

 [TestMethod]

可以看到添加了這個,在左邊就出現了一個按鈕,可以進行測試,點擊就會運行這個函數。

接下來就來進行測試一個小東西。

我的函數需要測試輸入一個文本是否會把選擇的 string 替換輸入文本的小函數。

我們在測試單元寫測試輸入下面代碼,如何寫測試的請去看下 測試代碼如何寫 相關的文章,也就是把所有可能的輸入和想要的輸出寫出來,判斷是不是程序運行和要的一樣,如果不是的話,報錯。

            var view =new produproperty.ViewModel.winmain(null);
            string text = "要替換文本";
            //把替換兩個字替換爲string
            view.text = text;
            view.select = 1;
            view.select_length = 2;
            view.clipboard_substitution("string");

上面的代碼就是謝輸入是什麼,然後就是寫輸出是什麼,判斷程序的運行是否和想要的一樣。判斷是否一樣,可以使用 Assert ,現在輸入已經寫完了, 然後寫 Assert

            Assert.AreEqual("要string文本",view.text);

看起來函數已經寫完了,開始測試

右擊運行

如果有很多個測試的函數,不需要一個個來,可以使用下面的方法執行測試類所有方法

可以在運行 所有測試

如果看到下面的圖,那麼 測試通過

我們還要做一些詭異測試,也就是程序考慮不到的,如 出現錯誤 Index and length must refer to a location within the string.

這樣就是我們函數有問題,測試就是保證程序是正確的,也就是在正常的輸入是正確的,對不特殊輸入還可以做一些可以把特殊的輸入變爲正常的,或者其他的,就是不讓程序直接就異常了。

當然有些輸入還是需要異常的,於是異常,也可以測試。只需要在特性加一個希望的異常,這樣就好了。

對於測試寫完, 如果通過了我們纔可以說我們代碼可以提交

Assert 是返回結果 true 方法是測試通過,如果是其他就不通過,Assert 可以有方法推薦使用

方法

描述

AreEqual

兩個值是否相等

AreNotEqual

兩個值不相等

AreNotSame

兩個值不相同

AreSame

兩個值相同

WPF 單元測試

對於 WPF 的單元測試,可以新建一個控制檯項目,然後右擊引用

添加 Microsoft.VisualStudio.QualityTools.UnitTestFramework 然後其他和UWP一樣。

注意命名空間 using Microsoft.VisualStudio.TestTools.UnitTesting;

然後把測試類寫公開,其他和 UWP 一樣

異步測試

參見:https://msdn.microsoft.com/zh-cn/magazine/dn818493.aspx


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章