Ant和Junit集成 开发
首先介绍Ant中比较重要的几个节点
1,设置类路径
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
location用来指定一个单个的文件,或者是目录,path用来指定目录,此外在location中可以使用通配符
path用来和预定义的路径一起用,在大多数情况下,location用的比较多
在classpath中也支持path和location路径,所以这种写法
<classpath>
<pathelement path="${classpath}"/>
</classpath>
可以用下面的写法代替
<classpath path="${classpath}"/>
在classpath中可以使用 pathelement节点 fileset节点,dirset节点和filelist节点,用法如下
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
<dirset dir="${build.dir}">
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
<filelist refid="third-party_jars"/>
</classpath>
2,设置路径
path路径可以引用另外一个path路径
<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
在path中应用另外一个path路径
<path id="tests.path" cache="true">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
在path中也有 location和 path的属性,所以也可以这么简写
<path id="base.path">
<pathelement path="${classpath}"/>
</path>
can be written as: <path id="base.path" path="${classpath}"/>
从 Ant1.8开始 path有一个可选的属性cache,cache设为true的话,则系统只会扫描一遍它内嵌的路径
cache默认是为false,为了性能的考虑,又是即使我们只有了一次这个path路径我们也要把cache设置为true(在复杂的内嵌结构中);
可以使用表达式${toString:pathreference}把path路径转换成字符串以:或者;间隔(跟据系统而定)
Ant 自动化构建工具
Junit 自动化测试工具
XP极限编程,边开发,边测试:基于单元测试的编程
Junit 3 使用
1,测试类需要继承TestCase
2,setUp方法用于初始化
3,tearDown方法用于结束
4,下面介绍几个测试方法
assertEquals("测试失败","str1","str2");如果str1和str2不相等的话,输出测试失败
assertNotNull("对象不能为null",object);如果object为null的话,测试失败,输出 对象不能为null
assertNull 和上面的相反
Junit 4 使用
1,使用注解
2,@Before 表示测试前执行的方法
3,@After 表示测试结束后执行的方法
4,@Test表示测试方法
5,命名规范 testXx()。。
6,在这里调用Assert类中的静态方法进行测试
在这里可以静态测试类import static org.junit.Assert.*;
这样的话就不需要写Assert,而可以直接调用静态方法
这样的话可以方便移植到Junit3的测试环境中,只需要继承TestCase类
7,测试方法介绍
Assert.assertEquals("测试失败",str1,str2);
方法和Junit 3中的基本一样,只是Junit 4 使用的注解的方式,方便写测试单元
区别Junit3 : 断言会抛出异常, 否则 fail。。
public void test(){
try{
youMethod();
fail("没有捕获异常");
}catch(NumberFormatException e){}
}
Junit4 : 断言会出现异常
@Test(excepted=NumberFormatException.class)
public void test throws NumberFormatException(){
youMethod();
}
Junit和Ant集成
核心代码:在ant下进行junit测试,并生成html框架的测试报告
<junit printsummary="true" ><!-- printsummary="true"设置显示出错信息 haltonfailure="true" halt on出错暂停 -->
<classpath refid="run-test-path"></classpath>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/> <!--设置输出为xml格式的-->
<!-- <test name="${run.test.class}"></test> --><!-- 进行单个类的测试运行 如果需要添加其他测试单元的话,直接增加test节点即可-->
<!-- 批量测试-->
<batchtest todir="${build.test.report}">
<fileset dir="${build.test.classes}" includes="${run.test.classes}"></fileset>
</batchtest>
</junit>
<!-- 测试报告生成命令 ,生成的是比较直观的html网页的格式-->
<junitreport todir="${build.test.report}"> <!-- 测试报告 的生成路径;指的是 TESTS-TestSuites.xml的生成路径-->
<fileset dir="${build.test.report}" includes="*.xml"></fileset><!-- 制定要根据什么文件来生成测试报告 -->
<report format="frames" todir="${build.test.report}/html"/>
</junitreport>
下面把完整的Ant和Junit集成小例子的代码发布出来
- <?xml version="1.0" encoding="UTF-8"?>
- <project name="junit-test" >
- <!-- 定义路径和其他属性-->
- <property name="src.dir" location="src"></property>
- <property name="build.dir" location="build"></property>
- <property name="build.classes" location="build/classes"></property>
- <property name="build.test.dir" location="build/test"></property>
- <property name="build.test.classes" location="build/test/classes"></property>
- <property name="build.test.report" location="build/test/report"></property>
- <property name="test.src.dir" location="test"></property>
- <property name="compile-lib" location="lib"></property>
- <property name="run.test.class" value="com.soukenan.testant.main.HelloWorldTest"></property>
- <property name="run.test.classes" value="**/*Test.class"></property>
- <!-- 在path下设置 类路径 fileset添加jar文件路径,不要使用pathelement(测试不好使) -->
- <path id="compile-path" >
- <fileset dir="${compile-lib}" includes="*.jar"></fileset>
- </path>
- <path id="compile-test-path">
- <path refid="compile-path"></path>
- <pathelement location="${build.classes}"/>
- </path>
- <path id="run-test-path">
- <path refid="compile-test-path"></path>
- <pathelement location="${build.test.classes}"/>
- </path>
- <!-- =================================
- target: default
- ================================= -->
- <target name="init" >
- <echo>清理文件夹</echo>
- <echo>${ant.version}</echo>
- <delete dir="build"></delete>
- </target>
- <target name="mkdir" depends="init">
- <echo>创建文件夹</echo>
- <mkdir dir="${build.dir}"/>
- <mkdir dir="${build.classes}"/>
- <mkdir dir="${build.test.dir}"/>
- <mkdir dir="${build.test.classes}"/>
- <mkdir dir="${build.test.report}"/>
- </target>
- <target name="compile" depends="mkdir">
- <echo>编译源代码</echo>
- <javac destdir="${build.classes}" srcdir="${src.dir}" includeantruntime="true"></javac>
- </target>
- <target name="compile-test" depends="compile">
- <echo>编译测试源代码</echo>
- <javac srcdir="${test.src.dir}"
- destdir="${build.test.classes}" classpathref="compile-test-path" includeantruntime="true" >
- </javac>
- </target>
- <target name="run-test" depends="compile-test">
- <echo>运行单元测试</echo>
- <junit printsummary="true" ><!-- printsummary="true"设置显示出错信息 haltonfailure="true" halt on出错暂停 -->
- <classpath refid="run-test-path"></classpath>
- <formatter type="brief" usefile="false"/>
- <formatter type="xml"/> <!--设置输出为xml格式的-->
- <!-- <test name="${run.test.class}"></test> --><!-- 进行单个类的测试运行 如果需要添加其他测试单元的话,直接增加test节点即可-->
- <!-- 批量测试-->
- <batchtest todir="${build.test.report}">
- <fileset dir="${build.test.classes}" includes="${run.test.classes}"></fileset>
- </batchtest>
- </junit>
- <!-- 测试报告生成命令 ,生成的是比较直观的html网页的格式-->
- <junitreport todir="${build.test.report}"> <!-- 测试报告 的生成路径;指的是 TESTS-TestSuites.xml的生成路径-->
- <fileset dir="${build.test.report}" includes="*.xml"></fileset><!-- 制定要根据什么文件来生成测试报告 -->
- <report format="frames" todir="${build.test.report}/html"/>
- </junitreport>
- </target>
- <target name="end" depends="run-test">
- <echo>构建完成</echo>
- </target>
- </project>