原文: AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享
謝謝大家觀看-AY的 VS2017推廣系列
Live Unit Testing
AY目前VS的版本---- 15.7.1
目前從15.3版本開始,就開始支援.net core的,網上很多資料都是舊的
建立空解決方案UtilityLibraries
添加一個 .NET Standard庫
添加類StringLibrary
C#
using System;
namespace UtilityLibraries
{
public static class StringLibrary
{
public static bool StartsWithUpper(this string s)
{
if (String.IsNullOrWhiteSpace(s))
return false;
return Char.IsUpper(s[0]);
}
public static bool StartsWithLower(this string s)
{
if (String.IsNullOrWhiteSpace(s))
return false;
return Char.IsLower(s[0]);
}
public static bool HasEmbeddedSpaces(this string s)
{
if (String.IsNullOrWhiteSpace(s))
return false;
foreach (var ch in s.Trim())
{
if (ch == ' ')
return true;
}
return false;
}
}
}
是否大寫開頭,是否小寫開頭,是否包含空格
重新生成解決方案。
添加 core的 測試項目 StringLibraryTests
點選确定
然後 右鍵依賴項,添加引用
修改預設測試代碼:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using UtilityLibraries;
using System;
namespace StringLibraryTests
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestStartsWithUpper()
{
// Tests that we expect to return true.
string[] words = { "AaronYang", "Zebra", "ABC", "Αθήνα", "Москва" };
foreach (var word in words)
{
bool result = word.StartsWithUpper();
Assert.IsTrue(result,
$"Expected for '{word}': true; Actual: {result}");
}
}
[TestMethod]
public void TestDoesNotStartWithUpper()
{
// Tests that we expect to return false.
string[] words = { "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
"1234", ".", ";", " " };
foreach (var word in words)
{
bool result = word.StartsWithUpper();
Assert.IsFalse(result,
$"Expected for '{word}': false; Actual: {result}");
}
}
[TestMethod]
public void DirectCallWithNullOrEmpty()
{
// Tests that we expect to return false.
string[] words = { String.Empty, null };
foreach (var word in words)
{
bool result = StringLibrary.StartsWithUpper(word);
Assert.IsFalse(result,
$"Expected for '{(word == null ? "<null>" : word)}': " +
$"false; Actual: {result}");
}
}
}
}
由于單元測試代碼包含一些非 ASCII 字元,是以 Visual Studio 顯示以下對話框來警告我們,如果以其預設的 ASCII 格式儲存檔案,某些字元将會丢失。 選擇“以其他編碼儲存”按鈕。
Unicode (UTF-8 無簽名) - 代碼頁 6500
單擊 菜單欄
單擊啟動
測試資料總管,列出結果,綠色√号,代表通過,測試結果和 代碼覆寫率測試,覆寫到的代碼,在對應的類中,走過的路徑都是√号标記,沒有覆寫的代碼,用藍色的 - 号标記
單擊方法前面的 √号,還會列出 覆寫過這個 方法的 測試方法名。
單擊return Char.IsUpper(s[0]); 前面的√ 同理,這裡隻有2個測試方法 覆寫到這裡
增加代碼繼續測試
[TestMethod]
public void TestStartsWithLower()
{
// Tests that we expect to return true.
string[] words = { "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство" };
foreach (var word in words)
{
bool result = word.StartsWithLower();
Assert.IsTrue(result,
$"Expected for '{word}': true; Actual: {result}");
}
}
[TestMethod]
public void TestDoesNotStartWithLower()
{
// Tests that we expect to return false.
string[] words = { "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва",
"1234", ".", ";", " "};
foreach (var word in words)
{
bool result = word.StartsWithLower();
Assert.IsFalse(result,
$"Expected for '{word}': false; Actual: {result}");
}
}
然後Ctrl+S儲存,發現自動運作測試了
切換到 測試的類,已經 覆寫過這些代碼, 覆寫過,就是說明,代碼被使用了,有意義的代碼。
目前為止的代碼都是成功的,添加一個失敗的。
切換到被測試的類,滑鼠移到X上,顯示,代碼被1 覆寫過了,說面測試是走到這裡的。
單擊方法名,那行的X,然後單擊,測試方法,然後單擊,最後1個 調試所選項
表示 第一個短語 導緻報錯
除此之外,我們還有一些幫助工具,可以幫我們調試
打開以後
從自動視窗,發現phrase 變量值 "Name\tDescription" 該字元串沒有包含空格,是以傳回false,
它認為嵌入的空格是U+0020。 但是,Unicode 标準包含許多其他空格字元。 這表明庫代碼對空格字元進行了錯誤的測試。
修改代碼: if (Char.IsWhiteSpace(ch))
OK了,到目前為止,剛剛入門 實時自動測試知識
====================www.ayjs.net 楊洋 wpfui.com ayui ay aaronyang=======請不要轉載謝謝了。=========
推薦您閱讀更多有關于“
vs2017,”的文章