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单元测试 第五篇的更多相关文章

  1. 【Python五篇慢慢弹(4)】模块异常谈python

    模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...

  2. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  3. 【Python五篇慢慢弹】数据结构看python

    数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...

  4. 【Python五篇慢慢弹(3)】函数修行知python

    函数修行知python 作者:白宁超 2016年10月9日21:51:52 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...

  5. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  6. 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

    解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...

  7. 解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译)

    解剖SQLSERVER 第五篇  OrcaMDF里读取Bits类型数据(译) http://improve.dk/reading-bits-in-orcamdf/ Bits类型的存储跟SQLSERVE ...

  8. 前端工程师技能之photoshop巧用系列第五篇——雪碧图

    × 目录 [1]定义 [2]应用场景 [3]合并[4]实现[5]维护 前面的话 前面已经介绍过,描述性图片最终要合并为雪碧图.本文是photoshop巧用系列第五篇——雪碧图 定义 css雪碧图(sp ...

  9. Python之路【第十五篇】:Web框架

    Python之路[第十五篇]:Web框架   Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...

随机推荐

  1. VS2012 安装 NPOI (管理NuGet程序包)

    问题背景 选择项目后右键==>管理NuGet程序包,搜索NPOI,返回服务器无法找到...404 解决方法: 第一步: 访问:https://www.nuget.org/api/v2/      ...

  2. iOS上传本地代码到git

    1.顾名思义,首先你得注册一个github账户 这个我就不细说了. 2.然后你得创建一个 repository  步骤见下图 3.相当于创建成功 会跳到下图界面 4.一看就很清楚了 create a ...

  3. nowcoder 寻找(LCA)

    这个题貌似是过的最少的? smeow一眼给出了一个单log的算法orz 首先求出x和y的lca, x和c的lca,y和c的lca, 然后分类讨论以下就行了 实际上只有三种情况 #include< ...

  4. ie和dom事件流的区别

    1.事件流的区别 IE采用冒泡型事件 Netscape使用捕获型事件 DOM使用先捕获后冒泡型事件 示例: 复制代码代码如下: <body> <div> <button& ...

  5. linux 查看端口被占用

    linux 查看端口被占用 1.lsof  -i : 端口号 用于查看某一端口的占用情况,比如查看8080端口使用情况,lsof  -i:8080 如果执行 lsof  -i:8080 系统提示 :  ...

  6. 3. tomcat 内存设置

    -Xms512m -Xmx1024m -XX:PermSize=512M

  7. 在centos上面编译安装python

    前言 因为在学习storm的过程中需要安装python,storm是部署在linux上面的,所以需要将python安装在linux上面. 安装准备 python下载 官网链接:https://www. ...

  8. 一次sendmsg的改造过程

    比较蛋疼的一个改造过程,简单记录一下. 场景:用户态使用sendmsg发包,tcp报文,由于内核实现过程中存在一次kernel_read,也就是存在将pagecache中的内容拷贝一次的问题. 为了减 ...

  9. python re模块与正则表达式

    首先要先继承re模块: import re re.findall() 方法 # 返回值为列表 \w 表示一个字符,为数字,字母,下滑线之一, \W匹配任意非数字,字母,下划线 print(re.fin ...

  10. 本学期c#学习总结

    本学期c#学习总结 时间转瞬即逝,大一上半学期的学习生涯已经结束.虽然以前我没什么关于学习计算机的基础,但是经过了这几个月的学习我也还是有点收获的. 我发现c#语言的关键词有很多语言特性和固定的用法, ...