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 ...
随机推荐
- 在他机上还原DB2的备份
在服务器获取得到db2的备份文件,拷贝到d盘db2_backup目录下面 在windows下的时间戳标记为时间目录名+文件名.001前面的 "2014022\0001006.001" ...
- Window10下安装sbt
参考:https://segmentfault.com/a/1190000002474507 下载:https://dl.bintray.com/sbt/native-packages/sbt/0.1 ...
- 学习 MeteoInfo二次开发教程(一)
来自气象家园:http://bbs.06climate.com/forum.php?mod=viewthread&tid=6631 按照教程,没有太大问题,有些是对c#操作不熟悉导致. 1.添 ...
- sharepoint环境安装过程中几点需要注意的地方
写在前面 上篇文章也说明了,在安装sharepoint环境的时候,确实吃了不少苦头,这里纪录一下安装过程中遇到的几个问题. 安装环境 windows server 2012 r2 standard x ...
- 关于java字节码框架ASM的学习
一.什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能.ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为 ...
- Java序列化机制原理
Java序列化就是将一个对象转化为一个二进制表示的字节数组,通过保存或则转移这些二进制数组达到持久化的目的.要实现序列化,需要实现java.io.Serializable接口.反序列化是和序列化相 ...
- fastjson的@JSONField注解
@JSONField作用:在字段和方法上1.Field:@JSONField作用在Field时,name可以定义输入key的名字,反序列化的时 值不会赋值到属性上2.作用在setter和getter方 ...
- 笔记:python (2015)
[开发环境]: Python 3.3 http://rj.baidu.com/soft/detail/25283.html 大小:20.2M 版本:3.3.5150 位数:64 更新日期:2014 ...
- leetcode437
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- TCP与UDP,可靠UDP如何实现
两种协议都是传输层协议,为应用层提供信息载体. TCP协议是基于连接的字节流的可靠协议,有三次握手,四次挥手,超时重传,流量控制(滑动窗口),拥塞控制和差错控制,也正因为有可靠性的保证和控制手段,所以 ...