原文: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

点击确定

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

修改默认测试代码:

C#
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个测试方法 覆盖到这里

增加代码继续测试

C#
        [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,”的文章

AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享的更多相关文章

  1. AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享

    原文:AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...

  2. AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

  3. AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享

    原文:AY的Dapper研究学习-继续深入-C#开发-aaronyang技术分享 ====================www.ayjs.net       杨洋    wpfui.com      ...

  4. WhyGL:一套学习OpenGL的框架,及翻写Nehe的OpenGL教程

    最近在重学OpenGL,之所以说重学是因为上次接触OpenGL还是在学校里,工作之后就一直在搞D3D,一转眼已经毕业6年了.OpenGL这门手艺早就完全荒废了,现在只能是重学.学习程序最有效的办法是动 ...

  5. 体验VS2017的Live Unit Testing

    相对于传统的Unit Test,VS2017 带来了一个新的功能,叫Live Unit Testing,从字面意思理解就是实时单元测试,在实际的使用中,这个功能就是可以在编写代码的时候进行实时的bac ...

  6. [图文教程]VS2017搭建opencv & C++ 开发环境

    首先从官网下载OpenCV最新版本 截至我写这文章,4.0已经发布预览版了,不过在这是没有的,只能用3.4.2: https://opencv.org/releases.html 一:安装 安装过程不 ...

  7. 慕课网electron写音乐播放器教程,代码跟随教程变动(十)

    添加播放状态,首先是歌曲名称和时间 在index.html中添加 <div class="container fixed-bottom bg-white pb-4"> ...

  8. wex5 教程 之 图文讲解 可观察对象的集群应用与绑定技术

    一 前言: wex5官方教程里,开篇即以一个input输入,output即时输出的例子,为我们展现了一个概念:可观察对象.在以后我的项目开发中,将大量运用可观察对象. 那么,问题来了: 1. 可观察对 ...

  9. Log4j 2使用教程 分类: B1_JAVA 2014-07-01 12:26 314人阅读 评论(0) 收藏

    转载自 Blog of 天外的星星: http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html Log4j 2的好处就不和大家说了,如果你搜了2,说明你 ...

随机推荐

  1. ArcSDE中Compress与Compact的区别

    原文 ArcSDE中Compress与Compact的区别 附件一”为两种数据库需要的管理工作.      与所表示的含义与操作是不同的.     对于来说,Compressing与Smart Dat ...

  2. [Typescript] What is a Function Type ? Function Types and Interfaces - Are They Related ?

    Function Type: type messageFn = (name: string) => string; function sayHello(name: string): string ...

  3. 【BZOJ 1007】 [HNOI2008]水平可见直线

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1007 [题意] [题解] 这个人讲得很好 http://blog.csdn.net/o ...

  4. Oracle数据库零散知识03

    21,存储过程,简化复杂操作,增加数据独立性,提高安全性,提高性能 与函数创建对比: create or replace function fun_01(v_01 in number) return ...

  5. 免费的 C/C++ 编译&解释 器列表

    摘自<C++编程网>,详细介绍请参考http://www.cpp-prog.com/2009/0520/118.html MicrosoftVisual C++ 2008 Express  ...

  6. Word Break II -- leetcode

    Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...

  7. 解决eclipse 保存卡顿的问题

    开发十年,就只剩下这套Java开发体系了 >>>   eclipse 如果启动慢,还可以接收. 可是如果是 保存的时候卡顿, 有时候会 卡顿 3秒-5 秒的,感觉到写代码特别的不顺畅 ...

  8. 通过一次SpringBoot打成war包部署到tomcat启动总结一般jar包冲突的解决方法

    启动时,报错信息如下: 28-Sep-2018 16:55:41.567 严重 [localhost-startStop-1] org.apache.catalina.core.StandardCon ...

  9. 利用WPF建立自己的3d gis软件(非axhost方式)(十三)万能的用户层接口,(强大的WPF)

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十三)万能的用户层接口,(强大的WPF) 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt ...

  10. .net remoting 使用事件

    原文:.net remoting 使用事件 在RPC如果需要使用事件,相对是比较难的.本文告诉大家如何在 .net remoting 使用事件. 目录 使用 Channel 序列化 开发建议 修复异常 ...