当前位置:网站首页 / C#人爱学不学 / 正文

AY写给国人的教程- VS2017 Live Unit Testing[1/2]

时间:2018年05月22日 | 作者 : aaronyang | 分类 : C#人爱学不学 | 浏览: 957次 | 评论 0

谢谢大家观看-AY的 VS2017推广系列

Live Unit Testing

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

image.png

目前从15.3版本开始,就开始支持.net core的,网上很多资料都是旧的


创建空解决方案UtilityLibraries

添加一个 .NET Standard库

image.png

添加类StringLibrary

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

image.png

点击确定

然后  右键依赖项,添加引用

image.png

修改默认测试代码:

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



单击 菜单栏

image.png

单击启动

image.png



image.png

测试资源管理器,列出结果,绿色√号,代表通过,测试结果和 代码覆盖率测试,覆盖到的代码,在对应的类中,走过的路径都是√号标记,没有覆盖的代码,用蓝色的 - 号标记

image.png


单击方法前面的 √号,还会列出 覆盖过这个 方法的  测试方法名。

image.png

单击return Char.IsUpper(s[0]); 前面的√   同理,这里只有2个测试方法 覆盖到这里

image.png


增加代码继续测试

        [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保存,发现自动运行测试了


切换到 测试的类,已经 覆盖过这些代码, 覆盖过,就是说明,代码被使用了,有意义的代码。

image.png

目前为止的代码都是成功的,添加一个失败的。


image.png

切换到被测试的类,鼠标移到X上,显示,代码被1 覆盖过了,说面测试是走到这里的。

image.png

单击方法名,那行的X,然后单击,测试方法,然后单击,最后1个 调试所选项

image.png

image.png

表示 第一个短语  导致报错

image.png

除此之外,我们还有一些帮助工具,可以帮我们调试

image.pngimage.png

image.png

打开以后

image.png

从自动窗口,发现phrase 变量值 "Name\tDescription"  该字符串没有包含空格,所以返回false,

它认为嵌入的空格是U+0020。 但是,Unicode 标准包含许多其他空格字符。 这表明库代码对空格字符进行了错误的测试。

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

image.png

OK了,到目前为止,刚刚入门 实时自动测试知识

image.png


====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========


推荐您阅读更多有关于“vs2017,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没成立公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF

声明:AYUI个人与商用免费,源码可购买。部分DEMO不免费

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

兼容XP到win10,vs2015/2017,最新AYUI:7.6.2.8

一次购买,永久免费更新,bug反馈及时修复,普通话回答你的问题,3个月的技术支持

AYUI7.6.X 企业服务详情:680元

AYUI7.6.X 官方风格详情:4000元

AYUI7.6.X 医疗+官方风格详情5000元

本AYUI知识版权最终归杨洋(AY)所有

本AYUI最终销售权归杨洋(AY)所有

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表