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

一、环境准备

  1. Jenkins:
    1. 到官网下载jenkins.war包:http://jenkins-ci.org/
    2. 安装方法有两种:
      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.csdn.net/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 SimpleCalculation {
    public int Add(int a,int b){
        return (a+b);
    }

    public int Subtration(int a,int b){
        return(a-b);
    }

}

SimpleCalculation.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);
    }
}

SimpleCalculationTest.java

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.csdn.net/lengyuhong/article/details/5828770

 

时间: 2024-10-31 00:42:48

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

基于 Jenkins 快速搭建持续集成环境

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能.本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境. 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变

jenkins搭建持续集成环境,配置SVN支持SVN中文路径不,怎么老是报错

问题描述 jenkins搭建持续集成环境,配置SVN支持SVN中文路径不,怎么老是报错 jenkins搭建持续集成环境,配置SVN支持SVN中文路径不,怎么老是报错 解决方案 一样的问题,等待大神解答.................................................

部署流水线搭建小记:Docker、Jenkins、Java和Couchbase

本文讲的是部署流水线搭建小记:Docker.Jenkins.Java和Couchbase[编者的话]这篇文章讲述了如何用Jenkins和Docker来为一个需要和数据库交互的Java应用创建部署流水线(deployment pipeline). Jenkins支持创建流水线.它使用一种基于Groovy的流水线领域特定语言(Pipeline DSL)的简单脚. 而这些脚本,通常名字叫Jenkinsfile.它定义了一些根据指定参数执行简单或复杂的任务的步骤.流水线创建好后,可以用来构建代码,或者编

Jenkins+Ant+Jmeter搭建持续集成的接口测试平台

一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性.接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大. 接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台

jenkins + Git 搭建持续集成环境

持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前广泛应用的持续集成工具,本文记录我使用jenkins+Git配置持续集成环境的整个流程以及踩到的坑(jenkins过程的坑往往不是在第一次配置,而是在配置结束后更改某些配置项的时候踩到). 总体流程如下: tomcat8.0下载地址:http://tomcat.apache.org/ jenkins

持续集成windows下jenkins的常见问题

所谓主从,主要应用的场景例如多种环境(windows/linux,.net/java/php)需要不同的构建基础,而我们又不想都将一系列的步骤和环境混杂在一台构建服务器上,所以类似于go中的代理,jenkins也提供了slave节点的概念,大家可以把不同类别的项目的构建部署在分类的节点服务器上.节点服务器不需要安装完整的jenkins包,构建事件的分发由master端来执行. 这里需要注意的就是主从节点之间的通信,我这里选择是将从节点以windows service的方式启动,而我碰到的坑就是环

Jenkins-构建程序的持续集成平台(安装篇)

一.什么是持续集成 1.什么是集成 指的是代码由编译.发布和测试.直到上线的一个过程 2.什么持续集成 高效的.持续性质的不断迭代代码的集成工作 3.如何高效准确的实现持续集成 必不可少的需要一套能自动化.并且可视化的平台来帮助我们. 那么总结来看,Jenkins就是一个可以帮助我们实现持续集成的平台. 二.为什么Jenkins能帮助我们进行持续集成 理由有如下几点: 1.Jenkins是一个开源的.且基于JAVA代码开发的持续集成系统,  因为含有非常丰富的插件支持所以我们可以方便的打通版本库

使用阿里云容器服务Jenkins实现持续集成之GitLab篇

前面有篇文章<使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建>详细地描述了如何通过阿里云容器服务平台,快速创建Jenkins应用,结合GitHub实现持续集成和镜像构建.这次将使用阿里云容器服务搭建GitLab作为代码管理仓库,最后使用Jenkins插件aliyun-container-service-deploy实现部署应用,并支持蓝绿发布和标准发布两种发布策略. 1.部署Jenkins和Slave 1.1使用编排模板一键部署 阿里云容器服务的示例模板中已经内置支持了Je

持续集成篇 --Hudson持续集成服务器的安装配置与使用

IP:192.168.4.221  8G内存(Hudson多个工程在同时构建的情况下比较耗内存) 环境:CentOS 6.6.JDK7 Hudson不需要用到数据库   Hudson只是一个持续集成服务器(持续集成工具),要想搭建一套完整的持续集成管理平台,还需要用到前面课程中所讲到的SVN.Maven.Sonar等工具,按需求整合则可. 1.  安装JDK并配置环境变量(略) JAVA_HOME=/usr/local/java/jdk1.7.0_72   2.  Maven本地仓库的安装(使用