用了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. weed-fs 基础测试

    =================== 启动 master 端口:9333 =================== sunsl@test-server:~$ weed master I0102 15: ...

  2. windows命令行(Command Prompt / Console)字体设置

    1.运行 regedit 打开注册表编辑器,打开注册表定位至[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Conso ...

  3. Oracle中 Package与Package body的介绍

    1.Oracle Package的作用: 可以简化应用设计.提高应用性能.实现信息隐藏.子程序重载 2.ORACLE中的function   .package.package   bodies.pro ...

  4. ORACLE object_id和data_object_id

    object_id和data_object_id 都是对象的唯一标识. object_id是对象的逻辑标识 data_object_id是对象的物理标识 对于没有物理存储的对象,data_object ...

  5. sql中 查询条件出现单引号和特殊字符处理

    1.两个单引号转为一个单引号 example:  select * from tb where  name=' '' ' 2.如果出现 "_","%"  需要用 ...

  6. Linux档案与目彔的基本操作(查看与权限)

    此文包含的命令: cd.pwd.mkdir.rmdir.rm.ls.cp.mv.cat.tac.more.less.head.tail.od.touch.umask.chattr.lsattr.fil ...

  7. Selenium2+python自动化27-查看selenium API

    前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有. p ...

  8. JavaWeb---图书馆管理系统

    写在开头,以后每天写记录. 今天,初步了解了一下,项目需求,用现在自己所学的知识,很多还不能做出来. 先用目前的知识,一步步的做出来,不断的完善,今天遇到的问题: 任务分析: 01.list页面的ad ...

  9. Depth Bias 以及 Ogre材质中的depth_bias

    深度偏移用来解决共面情况下出现闪烁的问题 通过给多边形增加一个z方向深度偏移(depth bias,z_bias),使3D空间的共面多边形看起来好像并不共面,以便它们能够被正确渲染.这种技术是很有用的 ...

  10. css2选择器

    CSS1&2元素选择器 选择符  类型  版本  简介 * 通配选择符 CSS2 所有元素对象. E 类型(HTML)选择符 CSS1 以文档语言对象类型作为选择符. E#myid id选择符 ...