到jakarta当一份apache-ant安装到你的系统上,并把ant/bin加到系统变量path中,使你的ant命令可以在任何地方被调用。
当一份junit3.8.1安装到你的系统上(解压缩,把junit.jar加到系统变量classpath中)。
建立测试目录junittest
把java文件,统一放到junittest/src目录,根据package建与之相关的目录.
文件1:
helloworld.java
package com.company;
public class helloworld {
public string sayhello() {
return "hello world!";
}
public static void main( string[] args ) {
helloworld world = new helloworld();
system.out.println(world.sayhello());
}
}
文件2:
alljunittests.java
package test.com.company;
import junit.framework.test;
import junit.framework.testcase;
import junit.framework.testsuite;
public class alljunittests extends testcase{
public alljunittests(string name){
super(name);
}
public static test suite(){
testsuite suite = new testsuite();
//testsuite suite = new testsuite();
suite.addtestsuite(helloworldtest.class);
return suite;
}
}
文件3:
helloworldtest.java
package test.com.company;
import com.company.helloworld;
import junit.framework.testcase;
import junit.framework.assertionfailederror;
import junit.framework.assert;
/**
* junit 3.8.1 testcases for helloworld
*/
public class helloworldtest extends testcase {
public helloworldtest(string name) {
super(name);
}
public static void main(string args[]) {
junit.textui.testrunner.run(helloworldtest.class);
}
public void testsayhello() {
helloworld world = new com.company.helloworld();
assertequals("hello world!", world.sayhello() );
}
}
我的build.xml放到junittestuild,构造这个文件才可以使用ant命令来执行,包括编译、打包、测试junit用例
<?xml version="1.0" encoding="utf-8" ?>
<project name="anita" default="main" basedir="../">
<property name="app.name" value="sayhello" />
<property name="build.dir" value="build/classes" />
<target name="junit">
<available property="junit.present" classname="junit.framework.testcase" />
</target>
<target name="compile" depends="junit">
<mkdir dir="${build.dir}"/>
<javac srcdir="src/" destdir="${build.dir}" >
<include name="**/*.java"/>
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="build/lib"/>
<jar jarfile="build/lib/${app.name}.jar"
basedir="${build.dir}" includes="com/**"/>
</target>
<target name="compiletests" depends="jar">
<mkdir dir="build/testcases"/>
<javac srcdir="src/test" destdir="build/testcases">
<classpath>
<pathelement location="build/lib/${app.name}.jar" />
<pathelement path="" />
</classpath>
<include name="**/*.java"/>
</javac>
</target>
<target name="runtests" depends="compiletests" if="junit.present">
<java fork="yes" classname="junit.textui.testrunner"
taskname="junit" failonerror="true">
<arg value="test.com.company.alljunittests"/>
<classpath>
<pathelement location="build/lib/${app.name}.jar" />
<pathelement location="build/testcases" />
<pathelement path="" />
<pathelement path="${java.class.path}" />
</classpath>
</java>
</target>
</project>
如果是win系统,在dos窗口下进入你的工作目录,并到 ../junittest/build下,执行ant runtests命令,会看到如下信息
d:tempjunittesttestcaseuild>ant runtests
buildfile: build.xml
junit:
compile:
[mkdir] created dir: d:tempjunittesttestcaseuildclasses
[javac] compiling 3 source files to d:tempjunittesttestcaseuildclasses
jar:
[mkdir] created dir: d:tempjunittesttestcaseuildlib
[jar] building jar: d:tempjunittesttestcaseuildlibsayhello.jar
compiletests:
[mkdir] created dir: d:tempjunittesttestcaseuild estcases
[javac] compiling 2 source files to d:tempjunittesttestcaseuild estcas
es
runtests:
[junit] .
[junit] time: 0
[junit] ok (1 test)
build successful
total time: 7 seconds
<中间休息^_^>
下面请把 com/company/helloworld.java文件中的return "hello world!";改成return "hello world!!",并在../junittest/builde目录运行下运行ant runtests。
我们会看到如下情形:
……………………………………
……………………………………
runtests:
[junit] .f
[junit] time: 0.01
[junit] there was 1 failure:
[junit] 1) testsayhello(test.com.company.helloworldtest)junit.framework.comp
arisonfailure: expected:<...world...> but was:<...world!...>
[junit] at test.com.company.helloworldtest.testsayhello(unknown source)
[junit] at sun.reflect.nativemethodaccessorimpl.invoke0(native method)
[junit] at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodacces
sorimpl.java:39)
[junit] at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmet
hodaccessorimpl.java:25)
[junit] failures!!!
[junit] tests run: 1, failures: 1, errors: 0
build failed
我们可以看到,这是junit测试用例未正常运行通过的错误信息。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!


