title author date CreateTime categories
win10 UWP 单元测试
lindexi
2018-2-13 17:23:3 +0800
2018-2-13 17:23:3 +0800
Win10 UWP

我们在写代码的时候不能保证我们写出来的代码是正确的,所以我们经常要单元测试。

单元测试和重构都是在做完一个小小函数一般就要进行一次,越早做就越好,可以比较早发现问题,这时我们还记得我们写的内容,不过比重构好的是,重构我们经常不知道要叫什么名字,而单元测试反而就比较简单。

右击解决方案,添加新项目

C#->Windows->通用->单元测试应用

命名我是叫 测试

在新建单元测试右击引用

把工程引用

打开测试项目

一般测试哪个类我就会新建一个类名称和要测试类相同,类里面函数和要测试函数名相同。

我在做一个windows Markdown,里面有函数把剪贴的文本覆盖Textbox选文本,我不知道这个函数写的是不是对,于是我就在单元测试,新建一个类

测试函数所在的类是winmain,所以在单元测试新建一个类winmain

在新建类加上

using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;

最新版 是 using Microsoft.VisualStudio.TestTools.UnitTesting;

在类定义前添加特性,如下:

[TestClass]

只有在类添加这个特性,这个类才可以做测试。

在类里面加函数 clipboard_substitution
函数需要在函数前添加特性,如下代码。添加了特性就是告诉vs,我就是测试函数,你可以运行我。

 [TestMethod]

可以看到添加了这个,在左边就出现了一个按钮,可以进行测试,点击就会运行这个函数。

接下来就来进行测试一个小东西。

我的函数需要测试输入一个文本是否会把选择的 string 替换输入文本的小函数。

我们在测试单元写测试输入下面代码,如何写测试的请去看下 测试代码如何写 相关的文章,也就是把所有可能的输入和想要的输出写出来,判断是不是程序运行和要的一样,如果不是的话,报错。

            var view =new produproperty.ViewModel.winmain(null);
string text = "要替换文本";
//把替换两个字替换为string
view.text = text;
view.select = 1;
view.select_length = 2;
view.clipboard_substitution("string");

上面的代码就是谢输入是什么,然后就是写输出是什么,判断程序的运行是否和想要的一样。判断是否一样,可以使用 Assert ,现在输入已经写完了,
然后写 Assert

            Assert.AreEqual("要string文本",view.text);

看起来函数已经写完了,开始测试

右击运行

如果有很多个测试的函数,不需要一个个来,可以使用下面的方法执行测试类所有方法

可以在运行 所有测试

如果看到下面的图,那么
测试通过

我们还要做一些诡异测试,也就是程序考虑不到的,如
出现错误 Index and length must refer to a location within the string.

这样就是我们函数有问题,测试就是保证程序是正确的,也就是在正常的输入是正确的,对不特殊输入还可以做一些可以把特殊的输入变为正常的,或者其他的,就是不让程序直接就异常了。

当然有些输入还是需要异常的,于是异常,也可以测试。只需要在特性加一个希望的异常,这样就好了。

对于测试写完,
如果通过了我们才可以说我们代码可以提交

Assert 是返回结果 true 方法是测试通过,如果是其他就不通过,Assert 可以有方法推荐使用

方法 描述
AreEqual 两个值是否相等
AreNotEqual 两个值不相等
AreNotSame 两个值不相同
AreSame 两个值相同

WPF 单元测试

对于 WPF 的单元测试,可以新建一个控制台项目,然后右击引用

添加 Microsoft.VisualStudio.QualityTools.UnitTestFramework 然后其他和UWP一样。

注意命名空间 using Microsoft.VisualStudio.TestTools.UnitTesting;

然后把测试类写公开,其他和 UWP 一样

异步测试

参见:https://msdn.microsoft.com/zh-cn/magazine/dn818493.aspx

2018-2-13-win10-UWP-单元测试的更多相关文章

  1. win10 UWP 单元测试

    我们在写代码的时候不能保证我们写出来的代码是正确的,所以我们经常要单元测试. 单元测试和重构都是在做完一个小小函数一般就要进行一次,越早做就越好,可以比较早发现问题,这时我们还记得我们写的内容,不过比 ...

  2. win10 uwp 使用 Microsoft.Graph 发送邮件

    在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...

  3. win10 uwp MVVM 轻量框架

    如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题.如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文.如果因为ViewModel代码越 ...

  4. Win10 UWP版《芒果TV》v2.4.0直播超女,芒果台综艺一网打尽

    Win10 UWP版<芒果TV>直播超女,芒果台综艺一网打尽 Win10版UWP<芒果TV>自2015年9月登录商店以来,一直在持续更新,积极改进,拥有芒果台视频的独家点播和直 ...

  5. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  6. Win10 UWP开发系列:实现Master/Detail布局

    在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...

  7. Win10 UWP开发实现Bing翻译

    微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...

  8. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

  9. 【Win10 UWP】后台任务与动态磁贴

    动态磁贴(Live Tile)是WP系统的大亮点之一,一直以来受到广大用户的喜爱.这一讲主要研究如何在UWP应用里通过后台任务添加和使用动态磁贴功能. 从WP7到Win8,再到Win10 UWP,磁贴 ...

  10. 【Win10 UWP】URI Scheme(一):Windows Store协议的解析和使用

    协议是Windows Phone和Windows Store应用的一个重要特点,可以做到在不同应用之间进行互相呼起调用.小小协议,学问大着呢.我打算写几篇关于协议在UWP中使用的文章. 这一讲的主要对 ...

随机推荐

  1. Spark 读取HBase数据

    Spark1.6.2 读取 HBase 1.2.3 //hbase-common-1.2.3.jar //hbase-protocol-1.2.3.jar //hbase-server-1.2.3.j ...

  2. P.W.N. CTF - MISC - Canadian FOI

    题目 链接:https://ctftime.org/task/6935 题解 只有两个页面的网站,index.html和about.html index.html页面有一个pdf链接,指向http:/ ...

  3. 【LeetCode】贪心 greedy(共38题)

    [44]Wildcard Matching [45]Jump Game II (2018年11月28日,算法群衍生题) 题目背景和 55 一样的,问我能到达最后一个index的话,最少走几步. 题解: ...

  4. js代码检测设备问题:为什么在移动端检测设备的时候会出现pc的页面

    为了在手机上也能正常显示页面,所以为之前写的页面又重写了一遍,专门用来在移动端显示,用js代码检测设备,如果是pc就显示pc的页面,如果是移动就显示移动的页面,但遇到一个问题就是在移动端打开会有一个延 ...

  5. Flutter中的日期、格式化日期、日期选择器组件

    Flutter中的日期和时间戳 //獲取當前日期 DateTime _nowDate = DateTime.now(); print(_nowDate);//2019-10-29 10:57:20.3 ...

  6. AI比医生更好地发现皮肤癌,未来计算机技术可渗透医院

    未来机器人将取代医生?这可能是事实.为什么这么多年轻人选择计算机行业,因为这是一个趋势.据法新社报道,研究人员周二称,一项计算机技术比人类皮肤科医生在检测皮肤癌方面的表现要好得多,因为这项研究是为了寻 ...

  7. shiro 安全框架 详解

    ---恢复内容开始--- Shiro 简介 简介• Apache Shiro 是 Java 的一个安全(权限)框架.• Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境, ...

  8. QT--控件屏蔽鼠标点击事件

    源博客:https://blog.csdn.net/qiufenpeng/article/details/81745266 最近学习QT写一个小界面想屏蔽鼠标点击,原来只要一个函数就搞定了. ui-& ...

  9. boost circularBuffer

    1. circular buffer has two fundamental properties: (1): The capacity of the circular buffer is const ...

  10. C# 私有字段前缀 _ 的设置(VS2019, .editorconfig)

    常量和静态只读字段大写 私有字段前缀 _ #### Naming styles #### # Naming rules dotnet_naming_rule.const_should_be_all_u ...