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 ...
随机推荐
- CentOS 7安装WordPress
在开始本文前,我假定你已经安装好了nginx.php-fpm和mariaDB(或mysql).它们的安装过程可参考我以前的文章. 1. 安装EPEL(Extra Packages for Enterp ...
- springboot 中的commandLineRunners接口
首先看实现了两个接口运行的顺序结果: My1: package com.example.commandlinerunner; import lombok.extern.java.Log;import ...
- 基础 - 字符读取函数scanf、getchar、gets、cin(清空缓存区解决单字符回车问题)
0x01 scanf.getchar.cin读取单字符: 如下: //scanf读取字符 回车问题 void Sub_1_1() { char v1,v2; scanf("%c", ...
- SAS 评分卡开发模型变量统计及输出
以下代码实现功能: 1.获取10个模型分别使用哪些变量 2.变量所模型使用的次数 3.把上表格输出到EXCEL中 %INCLUDE '00@HEADER.SAS'; %let dir=..\04@Mo ...
- leetCode27.移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- SpringBoot 之静态资源
boot 的默认的静态资源有多个, 由 ResourceProperties 配置了默认值: private static final String[] CLASSPATH_RESOURCE_LOCA ...
- VMware 2017 v14.x 永久许可证激活密钥
FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA CV7T2-6WY5Q-48EWP-ZXY7X-QGUWD
- mysql数据库支持 emoji表情
关键点: 1. 修改mysql数据库表ALTER table <tablename> modify <clolum> char(100) character set utf ...
- leetcode206
/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...
- import_module 导入变量的包
遇到你想导入的包是变量的时候,可以用这个实现 from importlib import import_module settings_path = self.pathm2 = import_modu ...