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
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,”的文章
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享
原文: C# 桌面软件开发-深入学习[2]- AY-C#人爱学不学-aaronyang技术分享 1 : C# Assembly.GetEntryAssembly().GetName().Version.ToString() 获得值是2.1.0.0 版本这东西,做升级,错误记录 都会有用的。 ====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。========= 2:创建ini文件 C# [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filepath); C# string section = "runVersion"; string key = "Net45"; DateTime d = TimeZone.CurrentTimeZone.ToLocalTime(new...
- 下一篇
AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享
原文: AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ayui ay aaronyang=======请不要转载谢谢了。========= 本文,是AY 看github源码,和网上一些博客,文章 整理,写出来的。目前还没找到系统级别的教程 先建立.net framework4.6的控制台项目,添加nuget引用 新建了Sqlserver的数据库TestDapper SQL CREATE TABLE [dbo].[Users]( [UserID] [int] IDENTITY(1,1) NOT NULL, [UserName] [varchar](50) NULL, [Email] [varchar](100) NULL, [Address] [varchar](100) NULL, CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ( [UserID] ASC )WITH (PAD_INDEX = OFF, ST...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,CentOS8安装Elasticsearch6.8.6