1.环境
windows10 专业版
Jenkins 2.7
apache-ant-1.9.6
JDK1.8
2.实验过程
2.1Apache Ant 1.9.6安装与配置
我这里安装的是1.10.10,下载地址:http://ant.apache.org/bindownload.cgi,将ant解压好,复制ant文件夹路径,例如我的ant放在D:\software\apache-ant-1.10.10。
于是配置环境变量:此电脑->系统属性->高级系统设置->环境变量->新建
添加环境变量:ANT_HOME,值就是ant所在路径,例如D:\software\apache-ant-1.10.10
在PATH中添加:%ANT_HOME%\bin
然后打开CMD,输入ant -v
,回车,出现下面的文字:
Buildfile: build.xml does not exist!
Build failed
安装成功!
2.2项目整体结构
com.java.src下面放源码 MessageUtil.java
com.java.test目录下放JUnit测试文件 TestMessageUtil.java
build.xml文件放在根目录下,即位于AntJunit-v1.0目录下,和src位于同一级别。
2.3项目源码
2.3.1MessageUtil.java
package com.java.src;
public class MessageUtil {
private String message;
//Constructor
//@param message to be printed
public MessageUtil(String message){
this.message = message;
}
// prints the message
public String printMessage(){
System.out.println(message);
return message;
}
// add "Hi!" to the message
public String salutationMessage(){
message = "Hi!" + message;
System.out.println(message);
return message;
}
}
2.3.2TestMessageUtil.java
package com.java.test;
import static org.junit.Assert.*;
import org.junit.Test;
import com.java.src.MessageUtil;
public class TestMessageUtil {
String message = "Robert";
MessageUtil messageUtil = new MessageUtil(message);
@Test
public void testPrintMessage() {
System.out.println("Inside testPrintMessage()");
assertTrue(message.equals(messageUtil.printMessage()));
}
@Test
public void testSalutationMessage() {
System.out.println("Inside testSalutationMessage()");
message = "Hi!" + "Robert";
assertTrue(message.equals(messageUtil.salutationMessage()));
}
}
2.3.3build.xml
<?xml version="1.0" encoding="utf-8"?>
<project name="test" default="test" basedir=".">
<!--配置基本属性-->
<property name="src" value="src"/>
<property name="build" value="build"/>
<property name="lib" value="lib" />
<property name="dist" value="dist"/>
<property name="classpath" location="${build}"/>
<!--配置测试报告的属性-->
<property name="report" value="report"/>
<property name="report.xml" value="${report}/junit/xml"/>
<property name="report.html" value="${report}/junit/html"/>
<!--配置运行时classpath-->
<path id="classpath.run">
<pathelement path="${classpath}"/>
<fileset dir="${lib}">
<include name="*.jar"/>
</fileset>
</path>
<!--配置测试时classpath-->
<path id="classpath.test">
<path refid="classpath.run"/>
<path location=""/>
</path>
<!--任务初始化-->
<target name="init" >
<tstamp/>
<delete dir="${build}"/>
<delete dir="${report}"/>
<delete dir="${dist}"/>
<mkdir dir="${build}"/>
<mkdir dir="${lib}"/>
<mkdir dir="${dist}"/>
<mkdir dir="${report}"/>
</target>
<!--配置编译任务-->
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}">
<classpath refid="classpath.run" />
</javac>
</target>
<!--配置运行任务-->
<target name="run" depends="compile">
<java classname="com.test.TestCalculator">
<classpath>
<path refid="classpath.run"/>
</classpath>
</java>
</target>
<!--配置JUnit测试,打印测试结果-->
<target name="test" depends="compile">
<mkdir dir="${report.xml}"/>
<mkdir dir="${report.html}"/>
<junit printsummary="yes" haltonfailure="no">
<classpath refid="classpath.run"/>
<formatter type="xml"/>
<batchtest fork="yes" todir="${report.xml}">
<fileset dir="${src}" includes="**/Test*.java"/>
</batchtest>
</junit>
<junitreport todir="${report.html}">
<fileset dir="${report.xml}">
<include name="*.xml"/>
</fileset>
<report format="frames" todir="${report.html}"/>
</junitreport>
</target>
</project>
2.4必要的环境配置
将junit-4.10.jar 复制到%ANT_HOME%\lib目录下。例如,我需复制到D:\software\apache-ant-1.10.10\lib下。这一步很有必要,否则正式运行会报错。
2.5配置Jenkins
(1)新建一个自由风格的job,名字为AntJunit-V1.0。
(2)源码管理:
选择No。利用SVN或git对源码进行管理时,Jenkins总是会把代码拷贝一份到自己的工作空间,然后对备份进行操作,因此本demo忽略源码管理,直接将代码拷贝到Jenkins工作区。
(3)增加构建步骤:
选择Invoke Ant。Targets的名字test来自build.xml中的target名字test(test在build.xml中也是默认执行的target)。
另外,这里的构建可以用windows脚本执行。二者效果完全一样。
(4)构建后操作:
选择Publish JUnit test result report。测试报告xml填:report/junit/html/TESTS-TestSuites.xml
。
(5)点击「保存」。
点击中间的「最新测试结果」,查看详情:
如果构建时遇到以下问题:
解决办法:
1.进入Jenkins,系统设置-全局配置,选择ant,名字为:ant_home,下面写Ant安装路径
2.项目配置时选择ANT_HOME