用msbuild跑xunit单元测试
用了Visual Studio 2015之后,发现没法跑xUnit单元测试,xUnit.net runner不支持VS2015,TestDriven.Net也不支持VS2015。
等它们支持VS2015,不知要等到猴年还是要等到马月。于是今天决定不等了,尝试用msbuild跑单元测试解决这个问题。
nuget上一搜,发现已经有人提供了xunit.MSBuild,直接用它就可以了。
在单元测试项目中安装这个nuget package:
Install-Package xunit.MSBuild
发现对应的.csproj文件中增加了如下的配置:
<Import Project="..\packages\xunit.MSBuild.1.9.2.3\build\xunit.MSBuild.targets"
Condition="Exists('..\packages\xunit.MSBuild.1.9.2.3\build\xunit.MSBuild.targets')" />
xunit.MSBuild.targets文件中的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask AssemblyFile="$(MSBuildThisFileDirectory)..\tools\xunit.runner.msbuild.dll" TaskName="Xunit.Runner.MSBuild.xunit" /> <PropertyGroup Condition="'$(RunXunitTests)' == ''">
<RunXunitTests Condition="'$(Configuration)' == 'Release'">true</RunXunitTests>
</PropertyGroup> <PropertyGroup>
<BuildDependsOn>$(BuildDependsOn);ExecuteXUnitTests</BuildDependsOn>
<RebuildDependsOn>$(RebuildDependsOn);ExecuteXUnitTests</RebuildDependsOn>
</PropertyGroup> <Target Name="ExecuteXUnitTests" Condition="'$(RunXunitTests)' == 'true'" >
<xunit Assembly="$(OutputPath)$(AssemblyName).dll" />
</Target>
</Project>
从这个msbuild的配置中可以看出,ExecuteXUnitTests就是跑单元测试的msbuild命令,触发条件是当项目以Release方式编译。
然后,只需修改一下.csproj中的配置,在项目编译后调用这个ExecuteXUnitTests命令即可:
<Target Name="AfterBuild">
ExecuteXUnitTests
</Target>
这样配置后,编译时会在Visual Studio的Output窗口显示单元测试的结果:
> PostModelTest.PostModel_Required_Validation
> Tests: , Failures: , Skipped: , Time: 0.410 seconds
>
>Build succeeded.
如果单元测试失败,会这样的显示:
> Tests: , Failures: , Skipped: , Time: 0.428 seconds
>
>Build FAILED.
>
>Time Elapsed ::03.91
========== Build: succeeded, failed, up-to-date, skipped ==========
Visual Studio的状态栏也会显示Build failed。
这样的显示效果虽然不是很直观,但是在编译时就运行单元测试挺方便,而且单元测试失败会让编译失败,这样更突显单元测试的重要性。
用msbuild跑xunit单元测试的更多相关文章
- xunit 单元测试
代码:GitHub 参考地址:https://github.com/Acumatica/xunit.autofac xunit +autofac进行单元测试 ①创建一个类库 引用nuget: xuni ...
- 轻松掌握VS Code开发.Net Core及创建Xunit单元测试
前言 本篇文章主要还是介绍使用 VS Code 进行.Net Core开发和常用 CLI命令的使用,至于为啥要用VS Code ,因为它是真的是好看又好用 :) ,哈哈,主要还是为了跨平台开发做准备. ...
- ABP Xunit单元测试 第五篇
1.创建如下的项目结构 public class TestName { public bool ValidateName(string Name) { if (Name == "yin&qu ...
- VS2015 使用Xunit来进行单元测试
安装Xunit: Xunit的安装现在不需要插件支持了,直接使用NuGet安装如下两个库即可: PM> Install-Package xunit PM> Install-Package ...
- 使用xUnit为.net core程序进行单元测试(上)
一. 导读 为什么要编写自动化测试程序(Automated Tests)? 可以频繁的进行测试 可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试. 肯定比人工测试要快. 可以 ...
- 使用xUnit为.net core程序进行单元测试(1)
导读 为什么要编写自动化测试程序(Automated Tests)? 可以频繁的进行测试 可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试. 肯定比人工测试要快. 可以更快速 ...
- 使用 xUnit 编写 ASP.NET Core 单元测试
还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊..NET Core 吸取教训,在设计上考虑到了可测试性,就连 ASP ...
- 使用 xUnit 编写 ASP.NET Core WebAPI单元测试
本文使用xUnit对ASP.NET Core WebAPI做单元测试,使用HttpClient的同步和异步请求,下面详细介绍xUnit的使用过程: 一.创建示例项目 模板为我们自动创建了一个Value ...
- .NET Core 性能分析: xUnit.Performance 简介
xunit-performance 是xUnit的一个扩展, 使用它可以对.NET Core项目进行性能测试. 官网:https://github.com/Microsoft/xunit-perfor ...
随机推荐
- [转]DCM Tutorial – An Introduction to Orientation Kinematics
原地址http://www.starlino.com/dcm_tutorial.html Introduction This article is a continuation of my IMU G ...
- windows下gethostbyname 调用失败
gethostbyname()函数属于WinSock API库,而在使用WinSock API之前,必须调用WSAStartup函数,只有该函数成功返回(表示应用程序与WinSock库成功地建立起连接 ...
- [cocos2d-js]cc.RenderTexture几种用法(数字图片、刮刮乐效果)
[转]http://blog.csdn.net/realcrazysun1/article/details/42393629 本文基于cocos2d-js 3.0版本引擎开发 RenderTextur ...
- 使用Jquery解析xml的两种方法
第一种方案(最稳妥): 先将String格式的xml转换为xml对象,然后再用Jquery解析xml对象 var returnDataXml = parseXML(returnData); var p ...
- Linux课程实践一:Linux基础实践(基础操作)
一.软件源维护 1. 基本操作 (1)查看源列表 sudo vim /etc/apt/sources.list deb:二进制软件安装包 deb-src:源码包 (2)备份软件源列表 sudo cp ...
- Tableview 优化Cell的复用机制01
#import "ViewController.h" @interface ViewController ()<UITableViewDataSource> @end ...
- Spark Streaming
Spark Streaming Spark Streaming 是Spark为了用户实现流式计算的模型. 数据源包括Kafka,Flume,HDFS等. DStream 离散化流(discretize ...
- C# random生成随机数全部一样
最近做排序测试 使用random生成随机数全部一样 估计是因为random采用的随机种子为时间戳 而一个循化执行消耗的时间没有到时间戳的最小单位 故没有变化 Thread.Sleep(10); 使用 ...
- python学习-异常处理
小技巧 isinstance(obj,foo) 检查是否obj是否是类 foo 的对象 class Foo(object): pass obj = Foo() isinstance(obj, Foo) ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...