搭建持续集成单元测试平台(Jenkins+Ant+Java+Junit+SVN)

一、环境准备

1、Jenkins:
到官网下载jenkins.war包:http://jenkins-ci.org/ 。安装方法有以下两种方式:
1)把下载下来的jenkins.war包放到文件夹下,如C:\jenkins,然后打开命令行窗口并进到该目录下,执行java -jar jenkens.war命令,当提示:“Jenkins is fully up and running”时,表示启动成功,这时在浏览器窗口输入:http://localhost:8080/ 就可到jenkins的首页。
2)如果有tomcat,把jenkins.war包放在tomcat的webapps文件夹下,启动tomcat时会自动启动jenkins,这时通过http://localhost:8080/jenkins就 可以访问jenkins的首页了。
2、ANT:下载ant并配置ANT_HOME,官网:http://ant.apache.org/
3、Junit:下载junit.jar包,没用过的可参考:http://blog.youkuaiyun.com/lengyuhong/article/details/5815017
4、SVN:
1)用本地硬盘当SVN仓库:http://wenku.baidu.com/view/12b02f6a011ca300a6c39081.html
2)SVN服务器搭建和使用:http://www.cnblogs.com/xiaobaihome/tag/SVN/(推荐用此种方法,后面有原因)

二、项目代码:

  环境准备好了之后就可开始写代码、单元测试案例以及ANT用来构建的build.xml文件,这些内容在上一篇ANT task之Junit、JunitReport有讲过,这里不细讲:

1、Java代码:

package com.glen.he;

public class ComplexCalculation {
    public int Division(int a,int b){        
        return (a/b);        
    }

    public int Multiply(int a,int b){        
        return (a*b);        
    }
}

ComplexCalculation.java
package com.glen.he;

public class ComplexCalculation {
    public int Division(int a,int b){        
        return (a/b);        
    }

    public int Multiply(int a,int b){        
        return (a*b);        
    }
}

ComplexCalculation.java

2、单元测试代码:

package com.glen.he;

import com.glen.he.ComplexCalculation;

import static org.junit.Assert.*;

import org.junit.Test;


public class ComplexCalculationTest {

    ComplexCalculation cc = new ComplexCalculation();

    @Test
    public void DivisionTest() {

        int c = cc.Division(100, 5);

        assertEquals(20, c);        
    }

    @Test
    public void MultiplyTest() {

        int c = cc.Multiply(100, 5);

        assertEquals(500, c);        
    }
}

ComplexCalculationTest.java
package com.glen.he;

import com.glen.he.SimpleCalculation;

import static org.junit.Assert.*;
import org.junit.Test;

public class SimpleCalculationTest {

    SimpleCalculation sc = new SimpleCalculation();

    @Test
    public void AddTest() {

        int c = sc.Add(3, 5);    

        assertEquals(8, c);        
    }

    @Test
    public void SubtrationTest() {

        int c = sc.Subtration(20, 5);    

        assertEquals(15, c);        
    }
}

3、build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="AntDemo" default="junit" basedir=".">
    <!-- =================================================================== -->
    <!-- 变量设置  -->
    <!-- =================================================================== -->

    <!-- 源代码src路径 -->
    <property name="src.path" value="src/java"/>
    <!-- 单元测试代码路径 -->
    <property name="test.path" value="src/test"/>
    <!-- 编译文件class路径 -->
    <property name="build.path" value="build"/>
    <!-- jar包路径 -->
    <property name="dist.path" value="dist"/>
    <!-- lib包路径 -->
    <property name="lib.path" value="lib"/>
    <!-- 生成报告junit4.xml路径 -->
    <property name="report.path" value="report"/>

    <!-- =================================================================== -->
    <!-- 设置classpath -->
    <!-- =================================================================== -->
    <path id="compile.path">        
        <fileset dir="${lib.path}">
            <include name="**/*.jar"/>
        </fileset>

        <pathelement path="${build.path}"/>
    </path>     

    <!-- 初始化 -->
    <target name="init">        
        <mkdir dir="${build.path}"/>
        <mkdir dir="${report.path}"/>
        <mkdir dir="${dist.path}"/>
    </target>

    <!-- =================================================================== -->
    <!-- 清除历史编译class -->
    <!-- =================================================================== -->
    <target name="clean" description="clean">        
        <delete dir="${build.path}"/>
        <delete dir="${report.path}"/>
        <delete dir="${dist.path}"/>
    </target>

    <!-- =================================================================== -->
    <!-- 编译测试文件,初始化目录 -->
    <!-- =================================================================== -->
    <target name="compile" depends="init">
        <javac srcdir="${src.path}" destdir="${build.path}"  classpathref="compile.path" includeantruntime="true"/>
        <javac srcdir="${test.path}" destdir="${build.path}"  classpathref="compile.path" includeantruntime="true"/>
    </target>      

    <!-- =================================================================== -->
    <!-- 执行测试案例 -->
    <!-- =================================================================== -->
    <target name="junit" depends="compile">                
        <junit printsummary="true" fork="true">        
             <formatter type="xml" usefile="true"/>        

             <classpath refid="compile.path"/>        

            <batchtest fork="on" todir="${report.path}" haltonfailure="no">
                <fileset dir="${build.path}">
                    <include name="**/*Test.class"/>
                </fileset>
            </batchtest>                 
         </junit>        
     </target>

    <target name="junit-report" depends="junit">        
        <!-- 产生单元测试报表文档 -->
        <junitreport todir="${report.path}">
            <fileset dir="${report.path}">
                <include name="TEST-*.xml" />
            </fileset>

            <report format="frames" todir="${report.path}" />
        </junitreport>
    </target>

    <target name="make-jar" depends="compile" description="make jar file">
          <jar jarfile="${dist.path}/AntDemo.jar">
               <fileset dir="${build.path}">

                <!--除去test文件-->
                <exclude name="**/*Test.class"/>
               </fileset>
          </jar>
     </target>    

</project>

build.xml

三、配置Jenkins:

 PS:Jenkins可以通过master/slave来支持分布式的job运行,本文运行在master,即Jenkins所在的机器。

1、打开jenkins首页,新建一个job,输入Item名称,选择 构建一个自由风格的软件项目,点击”OK” 

这里写图片描述

2、在源码管理那里,选择Subversion,在Repository URL后面,输入你的SVN地址。
这里写图片描述

PS:Repository URL使用本地磁盘当仓库这种方法后来我在其它机器上试验时,发现老是报错:svn: E180001: Unable to open an ra_local session to URL。一时没有找到解决办法,大家如果也碰到此问题,可以搭建SVN服务器来管理源代码,我试了,挺好使的。

3、在构建那里也可以有两种做法:

I、选择Execute Windows batch command,在输入框输入如下命令(这里我选择的是这个方法):

   set path=C:\ANT_HOME\Apache-Ant-1.7.0\bin;path 把ant的安装目录添加到path

   ant junit        执行junit task      
这里写图片描述

II、方法I比较麻烦,如果我们设置好了ANT_HOME,可以选择Invoke Ant,然后在targets里面指定我们build.xml里的task name。       
这里写图片描述

4、点击保存,然后选择立即构建,执行结果:  
这里写图片描述

参考资料:
http://hi.baidu.com/janice515/item/3272fe9b99eb4cc8b6253101
http://blog.youkuaiyun.com/lengyuhong/article/details/5828770

作者:Glen.He
出处:http://www.cnblogs.com/puresoul/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

### 使用 JMeterAntJenkins 中进行持续集成测试的配置与实现 #### 1. 安装和准备必要的工具 为了在 Jenkins 中使用 JMeterAnt 进行持续集成测试,首先需要确保以下工具已正确安装并配置好环境变量: - **JMeter**: 解压 JMeter 工具包至目标目录,并确认可以通过命令 `jmeter.bat` 启动 JMeter GUI 或 CLI 模式[^4]。 - **Ant**: 下载 Apache Ant 并将其解压到指定位置。将 Ant 的 bin 路径添加到系统的 PATH 环境变量中[^2]。 #### 2. 将 Ant 支持引入 JMeter 为了让 Ant 成功调用 JMeter 测试脚本,需完成以下操作: - 复制位于 JMeter 目录下的 `extras/ant-jmeter-*.jar` 文件到 Ant 的 lib 子目录下。这一步是为了让 Ant 找到所需的类 `org.programmerplanet.ant.taskdefs.jmeter.JMeterTask`。 #### 3. 创建构建文件 (`build.xml`) 在项目的根目录下创建一个名为 `build.xml` 的 Ant 构建文件,用于定义如何运行 JMeter 测试计划。以下是典型的 `build.xml` 示例: ```xml <project name="JMeter-Ant" default="run-tests"> <!-- 设置属性 --> <property name="jmeter.home" value="/path/to/jmeter"/> <property name="test.path" value="${basedir}/tests"/> <!-- 定义任务 --> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> <!-- 清理旧的结果 --> <target name="clean"> <delete dir="${basedir}/results"/> <mkdir dir="${basedir}/results"/> </target> <!-- 运行测试 --> <target name="run-tests" depends="clean"> <jmeter jmeterhome="${jmeter.home}" resultlogdir="${basedir}/results"> <testplans dir="${test.path}" includes="*.jmx"/> <property name="jmeter.save.saveservice.output_format" value="csv"/> </jmeter> </target> </project> ``` 此文件通过 `<taskdef>` 注册了 JMeter Task,并指定了测试计划所在的路径以及结果日志存储的位置[^1]。 #### 4. 配置 JenkinsJenkins 上设置新任务以支持上述流程: - **安装必要插件**:前往 Jenkins 插件管理页面,安装 HTML Publisher Plugin 和 Ant In Workspace 插件[^3]。 - **新建自由风格项目**:点击 “New Item”,选择 Free-style project 类型的任务名称。 - **配置 JDK 和 ANT**:进入全局工具配置部分,分别设定 JDK 和 ANT 的安装路径及其版本号。 - **源码管理**:如果适用的话,连接 Git/SVN 库来获取最新的代码库副本。 - **构建触发器**:可以按需求启用定时构建或其他方式自动启动 CI 流程。 - **构建步骤**:添加执行 Shell 命令或者 Windows Batch Command 步骤,在其中输入类似于 `ant -f build.xml run-tests` 来驱动整个过程。 - **发布测试报告**:利用 Post-build Actions 添加 Publish JUnit test result report 动作指向生成好的 CSV 或 XML 报告;另外也可以借助 HTML Publisher 展示更直观的效果图。 #### 5. 验证配置有效性 最后验证整体链路是否正常工作: - 登陆到 JMeter extras 文件夹内尝试手动执行一次完整的流水线模拟即 `ant.bat -file build.xml -Dtest=TestPlanName` 查看是否有异常抛出。 - 提交更改后的资源给仓库促使远程服务器上的 Jenkins 实例依据预设条件重新拉取最新改动进而再次经历一遍端到端检验环节。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值