ABP Xunit单元测试 第五篇
1、创建如下的项目结构

public class TestName
{ public bool ValidateName(string Name)
{
if (Name == "yin")
{
return true;
}
else
return false;
}
}
public class UnitTest1
{
[Fact]
public void Test1()
{
TestName name = new TestName();
Assert.True(name.ValidateName("yin")); }
}
运行方法,打开测试资源管理器,让后点击全部运行:


Assert.True
断言累,判断返回结果是否真,真表示测试通过,false表示测试不通过
如果以前使用过NUnit或者VS自带的MSTest测试工具,下面的对比表格会让你很容易上手xUnit.net:
|
NUnit 2.2 |
MSTest |
xUnit.net |
备注 |
|
[Test] |
[TestMethod] |
[Fact] |
标记为测试方法 |
|
[TestFixture] |
[TestClass] |
n/a |
包含有测试方法的类,在xUnit.net中无需标记,它会查找程序集中所有的public的测试方法 |
|
[ExpectedException] |
[ExpectedException] |
Assert.Throws/ Record.Exception |
期望抛出异常 |
|
[SetUp] |
[TestInitialize] |
Constructor(即构造函数) |
在每个测试方法执行之前用于初始化的方法 |
|
[TearDown] |
[TestCleanup] |
IDisposable.Dispose |
在每个测试方法执行之后用于结束的方法 |
|
[TestFixtureSetUp] |
[ClassInitialize] |
IUseFixture<T> |
在所有测试方法执行之前用于初始化的方法 |
|
[TestFixtureTearDown] |
[ClassCleanup] |
IUseFixture<T> |
在所有测试方法执行之后用于结束的方法 |
|
[Ignore] |
[Ignore] |
[Fact(Skip="reason")] |
临时忽略被标记的方法 |
|
n/a |
[Timeout] |
[Fact(Timeout=n)] |
用于指定被测试方法的最大执行时间(单位毫秒),如果超过指定时间则会被标记为测试失败 |
|
[Property] |
[TestProperty] |
[Trait] |
Set arbitrary metadata on a test |
|
n/a |
[DataSource] |
[Theory], [XxxData] |
xUnit.Net的断言(Assertions)
下面的表格也是一个关于NUnit、MSTest及xUnit.Net断言的对比。
|
NUnit 2.2 |
MSTest |
xUnit.net |
备注 |
|
AreEqual |
AreEqual |
Equal |
相等比较 |
|
AreNotEqual |
AreNotEqual |
NotEqual |
不相等比较 |
|
AreNotSame |
AreNotSame |
NotSame |
不相同比较 |
|
AreSame |
AreSame |
Same |
相同比较 |
|
Contains |
Contains (on CollectionAssert) |
Contains |
|
|
DoAssert |
n/a |
n/a |
|
|
n/a |
DoesNotContain (on CollectionAssert) |
DoesNotContain |
|
|
n/a |
n/a |
DoesNotThrow |
|
|
Fail |
Fail |
n/a |
可用Assert.True(false, "message")替代 |
|
Greater |
n/a |
n/a |
可用Assert.True(x > y)替代 |
|
Ignore |
Inconclusive |
n/a |
|
|
n/a |
n/a |
InRange |
|
|
IsAssignableFrom |
n/a |
IsAssignableFrom |
|
|
IsEmpty |
n/a |
Empty |
|
|
IsFalse |
IsFalse |
False |
|
|
IsInstanceOfType |
IsInstanceOfType |
IsType |
|
|
IsNaN |
n/a |
n/a |
可用Assert.True(double.IsNaN(x))替代 |
|
IsNotAssignableFrom |
n/a |
n/a |
可用Assert.False(obj is Type)替代 |
|
IsNotEmpty |
n/a |
NotEmpty |
|
|
IsNotInstanceOfType |
IsNotInstanceOfType |
IsNotType |
|
|
IsNotNull |
IsNotNull |
NotNull |
|
|
IsNull |
IsNull |
Null |
|
|
IsTrue |
IsTrue |
True |
|
|
Less |
n/a |
n/a |
可用Assert.True(x < y)替代 |
|
n/a |
n/a |
NotInRange |
确保数据在某个范围内 |
|
n/a |
n/a |
Throws |
确保会抛出异常 |
xUnit.Net的项目文件结构
因为在可视化方面xUnit.Net不如NUnit,所以这里有必要介绍一下它的项目文件.xunit的组成元素。.xunit实际上也是一个xml文件,它的根节点是<xunit>,<xunit>有<assemblies>子节点,<assemblies>下可以有多个<assembly>节点。<assembly>节点包含以下属性:
filename:这是必须属性,用于指定包含在项目中的绝对或者相对路径的文件。
config-filename:这个是非必须属性,用于指定测试时所使用的config文件,默认是none,表示不适用任何配置文件。
shadow-copy:运行测试时是否对dll进行shadow-copy,默认是true,这个咱还不清楚true/false对程序的影响。
下面就是一个例子,在例子中执行指明了测试中使用的config文件:
ABP Xunit单元测试 第五篇的更多相关文章
- 【Python五篇慢慢弹(4)】模块异常谈python
模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 【Python五篇慢慢弹】数据结构看python
数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...
- 【Python五篇慢慢弹(3)】函数修行知python
函数修行知python 作者:白宁超 2016年10月9日21:51:52 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
- 解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译)
解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译) http://improve.dk/reading-bits-in-orcamdf/ Bits类型的存储跟SQLSERVE ...
- 前端工程师技能之photoshop巧用系列第五篇——雪碧图
× 目录 [1]定义 [2]应用场景 [3]合并[4]实现[5]维护 前面的话 前面已经介绍过,描述性图片最终要合并为雪碧图.本文是photoshop巧用系列第五篇——雪碧图 定义 css雪碧图(sp ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...
随机推荐
- XShell停止滚屏,禁止滚动
Ctrl+S:锁定当前屏幕 Ctrl+Q:解锁当前屏幕 Ctrl+Alt+] 进入命令输入状态
- 安装JVCL/JCL组件
在安装的时候,注意要先安装JCL,我试图直接安装JVCL,提示找不到文件,先安装JCL后再安装就不存在这个问题.安装到组件面板上的安装包以D结尾,可以Install,以R结尾的只要编译就可以了. 安装 ...
- [UE4]瞬移
1.设置Input,事件名称设置为Teleport 2.设置事件Teleport 3.
- Android ScrollView嵌套Recyclerview滑动卡顿,松手即停问题解决;
假如你的布局类似这样的: <ScrollView android:layout_width="match_parent" android:layout_height=&quo ...
- linux git clone 指定分支
git clone -b develop http://192.168.11.11:8888/scm/git/vrmmo 指定下载develop分支
- 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!
前言 还记得是大学2年级的时候,偶然之间看到了学长在学习python:我就坐在旁边看他敲着代码,感觉很好奇.感觉很酷,从那之后,我就想和学长一样的厉害,就想让学长教我,请他吃了一周的饭,他答应了.从此 ...
- js获取浏览器内核判断终端(是QQ打开还是QQ浏览器打开)
var browser ={ versions: function() { var u = navigator.userAgent, var ua = navigator.userAgent.toLo ...
- .NET MVC 过滤器使用
来看以下两种情况 1. 如果我们需要对某个模块做权限控制,通常的做法是写一个基类(BaseController),让这个基类继承Controller类,在BaseController的构造方法中进行权 ...
- 关于ES6兼容IE 问题记录之一
这两天在做前端网页时,遇到一个问题,页面打开发生乱码,如下: 现象:360 浏览器,在急速模式下(即谷歌模式)是OK的显示,第一张图布局OK:在兼容模式下(即IE模式)是显示NG的,第二张图布局乱码 ...
- 在cxGrid表格中如何获得当前列的字段名
var GridDBTableView:TcxGridDBTableView; ColIndex:Integer; FieldName:string; begin GridDBTableView := ...