天天看點

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

原文: AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

謝謝大家觀看-AY的 VS2017推廣系列

Live Unit Testing

AY目前VS的版本---- 15.7.1

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

目前從15.3版本開始,就開始支援.net core的,網上很多資料都是舊的

建立空解決方案UtilityLibraries

添加一個 .NET Standard庫

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

添加類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

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

點選确定

然後  右鍵依賴項,添加引用

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

修改預設測試代碼:

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

單擊 菜單欄

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

單擊啟動

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享
AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

測試資料總管,列出結果,綠色√号,代表通過,測試結果和 代碼覆寫率測試,覆寫到的代碼,在對應的類中,走過的路徑都是√号标記,沒有覆寫的代碼,用藍色的 - 号标記

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

單擊方法前面的 √号,還會列出 覆寫過這個 方法的  測試方法名。

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

單擊return Char.IsUpper(s[0]); 前面的√   同理,這裡隻有2個測試方法 覆寫到這裡

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

增加代碼繼續測試

[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儲存,發現自動運作測試了

切換到 測試的類,已經 覆寫過這些代碼, 覆寫過,就是說明,代碼被使用了,有意義的代碼。

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

目前為止的代碼都是成功的,添加一個失敗的。

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

切換到被測試的類,滑鼠移到X上,顯示,代碼被1 覆寫過了,說面測試是走到這裡的。

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

單擊方法名,那行的X,然後單擊,測試方法,然後單擊,最後1個 調試所選項

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享
AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

表示 第一個短語  導緻報錯

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

除此之外,我們還有一些幫助工具,可以幫我們調試

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享
AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享
AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

打開以後

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

從自動視窗,發現phrase 變量值 "Name\tDescription"  該字元串沒有包含空格,是以傳回false,

它認為嵌入的空格是U+0020。 但是,Unicode 标準包含許多其他空格字元。 這表明庫代碼對空格字元進行了錯誤的測試。

修改代碼:   if (Char.IsWhiteSpace(ch))

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

OK了,到目前為止,剛剛入門 實時自動測試知識

AY寫給國人的教程- VS2017 Live Unit Testing[1/2]-C#人愛學不學-aaronyang技術分享

====================www.ayjs.net       楊洋    wpfui.com        ayui      ay  aaronyang=======請不要轉載謝謝了。=========

推薦您閱讀更多有關于“

vs2017

,”的文章