zoukankan      html  css  js  c++  java
  • 用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="..packagesxunit.MSBuild.1.9.2.3uildxunit.MSBuild.targets" 
    Condition="Exists('..packagesxunit.MSBuild.1.9.2.3uildxunit.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)..	oolsxunit.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窗口显示单元测试的结果:

    37> PostModelTest.PostModel_Required_Validation
    37> Tests: 1, Failures: 0, Skipped: 0, Time: 0.410 seconds
    37>
    37>Build succeeded.

    如果单元测试失败,会这样的显示:

    1>    Tests: 1, Failures: 1, Skipped: 0, Time: 0.428 seconds
    1>
    1>Build FAILED.
    1>
    1>Time Elapsed 00:00:03.91
    ========== Build: 0 succeeded, 1 failed, 42 up-to-date, 0 skipped ==========

    Visual Studio的状态栏也会显示Build failed。

    这样的显示效果虽然不是很直观,但是在编译时就运行单元测试挺方便,而且单元测试失败会让编译失败,这样更突显单元测试的重要性。

  • 相关阅读:
    linux下使用tar命令
    ContentType和@ResponseBody
    ActiveMQ两种模式PTP和PUB/SUB<转>
    Postgresql分表与优化
    PostgreSQL存储过程<转>
    PostgreSQL Table Partitioning<转>
    Postgresql查询表的大小
    Postgresql添加/删除触发器示例
    Android TextView 支持的HTML标签
    我只是一直很努力
  • 原文地址:https://www.cnblogs.com/dudu/p/msbuild-xunit.html
Copyright © 2011-2022 走看看