用了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单元测试的更多相关文章

  1. xunit 单元测试

    代码:GitHub 参考地址:https://github.com/Acumatica/xunit.autofac xunit +autofac进行单元测试 ①创建一个类库 引用nuget: xuni ...

  2. 轻松掌握VS Code开发.Net Core及创建Xunit单元测试

    前言 本篇文章主要还是介绍使用 VS Code 进行.Net Core开发和常用 CLI命令的使用,至于为啥要用VS Code ,因为它是真的是好看又好用 :) ,哈哈,主要还是为了跨平台开发做准备. ...

  3. ABP Xunit单元测试 第五篇

    1.创建如下的项目结构 public class TestName { public bool ValidateName(string Name) { if (Name == "yin&qu ...

  4. VS2015 使用Xunit来进行单元测试

    安装Xunit: Xunit的安装现在不需要插件支持了,直接使用NuGet安装如下两个库即可: PM> Install-Package xunit PM> Install-Package ...

  5. 使用xUnit为.net core程序进行单元测试(上)

    一. 导读 为什么要编写自动化测试程序(Automated Tests)? 可以频繁的进行测试 可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试. 肯定比人工测试要快. 可以 ...

  6. 使用xUnit为.net core程序进行单元测试(1)

    导读 为什么要编写自动化测试程序(Automated Tests)? 可以频繁的进行测试 可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试. 肯定比人工测试要快. 可以更快速 ...

  7. 使用 xUnit 编写 ASP.NET Core 单元测试

    还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊..NET Core 吸取教训,在设计上考虑到了可测试性,就连 ASP ...

  8. 使用 xUnit 编写 ASP.NET Core WebAPI单元测试

    本文使用xUnit对ASP.NET Core WebAPI做单元测试,使用HttpClient的同步和异步请求,下面详细介绍xUnit的使用过程: 一.创建示例项目 模板为我们自动创建了一个Value ...

  9. .NET Core 性能分析: xUnit.Performance 简介

    xunit-performance 是xUnit的一个扩展, 使用它可以对.NET Core项目进行性能测试. 官网:https://github.com/Microsoft/xunit-perfor ...

随机推荐

  1. 交换两个数-c++实现

    今天看了下交换数值的小程序,网上挺多的,整理了下,,因为参考较多,没一一给出链接,若原作者看到,可以留言,我会添加 // example_1_6_function_swap.cpp : 定义控制台应用 ...

  2. ajax XML

    <script src="jquery-1.11.2.min.js"></script> </head> <body> <se ...

  3. [转]df命令

    linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法:df [选项] 该命令各个选项的含义如下: -a 显示所有文件 ...

  4. js判断是否安装pdf播放器

    function isPDFPluginInstall() { if (!isIE()) { //ie 浏览器 和 非ie浏览器支持 // not ie if (navigator.plugins & ...

  5. Looping Techniques

    [Looping Techniques] 1.When looping through dictionaries, the key and corresponding value can be ret ...

  6. Echarts data数据为空时,显示“-”

    { name:'2007', type:'bar', data:["","",""]} 解决办法: 写成data:["" ...

  7. Delphi编译的程序,查看控件名称方法

    使用SpyLite24这个软件可以查看程序所使用的控件名称

  8. 问题: ActivityManager: Warning: Activity not started, its current task has been brought to the front

    运行程序时看控制台有这样的错误,应用程序没跑起来. 解决办法:project-->Clean

  9. MCS-51系列特殊功能寄存器(摘抄)

    1. P0 (80H) P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 2.SP 栈指针(81H) 3.DPTR 数据指针(由DPH和DPL组成) DPL 数据指针低八 ...

  10. 普林斯顿结构 VS 哈佛结构

    1. 冯·诺依曼结构 冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.取指令和取操作数都在同一总线上,通过分时复用的方式进行:缺点是在高速运行时,不能 ...