NANT + Nunit + NUnit2Report

来源:互联网 发布:气象站点数据下载 编辑:程序博客网 时间:2024/05/21 20:28

好久没用 Java 了。 最近听一同事在诉苦。
说他那里用 Java 的 ANT 与 JUnit .
junitreport 想导出一个 HTML 格式的测试报告,老是出错。


想想
Java 有 ant,  .NET  有  NANT
Java 有 junit  .NET  有  NUNIT
Java 有 junitreport  .NET 应该也有的吧......

于是查询一下, 还真有。
名字就叫 NUnit2Report


整个环境搭起来,也还可以。
NANT 嘛, 是下载了一个 nant-0.91-bin.zip
简单解压缩到 D:\nant-0.91

然后去创建一个  nant.bat

内容为:

"D:\nant-0.91\bin\NAnt.exe" %*

 

NUNIT 嘛, 是下载一个 NUnit-2.5.7.10213.msi
使用默认安装。

 

NUnit2Report 嘛,是下载一个 NUnit2Report-V1.2.2.zip
解压缩以后,看看文档, 就是简单的把  bin 目录下的文件, 复制到  D:\nant-0.91\bin 目录下就好了。

 

 

下面是一个小例子,  文件名为  my.build

 

<?xml version="1.0" encoding="utf-8" ?>

<!-- 
  NANT 的 build 文件, 扩展名为 .build
  不同于 java 的 ant 的  build.xml
-->


<!--
  project表示构建文件的项目,每个构建文件有且只有一个项目,他包括一系列的target
  default=" show "表示项目的默认目的(target)是show
  basedir="." 表示基准目录为当前目录
-->
<project name="B0100_NAnt" default="show" basedir=".">

  <property name="basename" value="HelloNAnt" />
  <property name="debug" value="true" />

 

  <!--
     target 表示一个目的,他包括一系列的task,
  name="show"指定目的的名称,这个是必选的。
  -->
  <target name="show">
   
 
 <!--
   echo是一个任务(task)他用来显示一个特定的字符串,
   message="Hello NAnt"表示要显示的字符串为Hello NAnt。
 -->
    <echo message="Hello NAnt"/>
  </target>

 
 

  <!-- 编译文件 -->
  <target name="build">
    <mkdir dir="bin" />
    <csc target="exe" output="bin/${basename}-cs.exe" debug="${debug}">
      <sources>
        <include name="*.cs"/>
      </sources>
      <references>
        <include name="C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\framework\nunit.framework.dll" />
      </references>
    </csc>
  </target>

 
 
  <!--运行文件,run基于build-->
  <target name="run" depends="build">
    <exec program="bin/${basename}-cs.exe" basedir="."/>
  </target>
 
 
 
  <!--  单元测试  -->
  <target name="unittest" depends="build"> 
   
 <!-- 调用 Nunit 进行测试  -->
    <nunit2>
   <!-- 输出的文件为  XML 格式.  -->
      <formatter type="Xml" usefile="true" extension=".xml" outputdir="bin/results" />

      <test assemblyname="bin/${basename}-cs.exe" >
  <references>
          <include name="C:\Program Files (x86)\NUnit 2.5.7\bin\net-2.0\framework\nunit.framework.dll" />
        </references>
   </test>
    </nunit2>
 
 <!-- 根据 前面的测试结果 XML 文件, 产生 html 报表. -->
    <nunit2report out="NUnitReport.html" >
   <fileset>
  <include name="bin/results/*results.xml" />
   </fileset>
 </nunit2report>

  </target>

</project>

 

 

C# 的单元测试代码,就没另外写了, 我找个别的项目的单元测试代码,复制过来了。  就用  LINQ 基本方法的使用例子   这个了。

 

测试的时候,发现 nant  里面调  nunit 的时候, 某些  标记为  [ExpectedException(typeof(System.InvalidOperationException))] 的 测试。 失败了。

具体原因不明,暂时先注释掉。

 

 

运行:

D:\Code\my-csharp-sample\B0100_NAnt>nant unittest

D:\Code\my-csharp-sample\B0100_NAnt>"D:\nant-0.91\bin\NAnt.exe" unittest
NAnt 0.91 (Build 0.91.4312.0; release; 2011/10/22)
Copyright (C) 2001-2011 Gerry Shaw
http://nant.sourceforge.net

Buildfile:
Target framework: Microsoft .NET Framework 4.0
Target(s) specified: unittest


build:


unittest:


BUILD SUCCEEDED

Total time: 0.8 seconds.


 

生成的 HTML 看上去还不错。