好久没用 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 看上去还不错。