搭建持续集成单元测试平台(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.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 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;

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);
    }
}
<?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

作者:Glen.He

出处:http://www.cnblogs.com/puresoul/

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

时间: 2024-11-03 01:39:09

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

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

一.环境准备: 1.JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Jmeter:http://jmeter.apache.org/download_jmeter.cgi 3.Ant:http://ant.apache.org/bindownload.cgi 4.Jenkins:http://jenkins-ci.org/ 具体可参见我另一篇博客:http://www.cnblogs.com/pur

jmeter --- 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)

一.环境准备: 1.JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Jmeter:http://jmeter.apache.org/download_jmeter.cgi 3.Ant:http://ant.apache.org/bindownload.cgi 4.Jenkins:http://jenkins-ci.org/ 具体可参见http://www.cnblogs.com/puresoul/p

搭建持续集成接口测试平台(jenkins+ant+jmeter)

一.环境准备: 1.JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Jmeter:http://jmeter.apache.org/download_jmeter.cgi 3.Ant:http://ant.apache.org/bindownload.cgi 4.Jenkins:http://jenkins-ci.org/ 具体可参见我另一篇博客:http://www.cnblogs.com/pur

Jenkins Gitlab持续集成打包平台搭建

相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点.更多介绍参考[维基](https://en.wikipedia.org/wiki/Jenkins_(software)介绍. Gitlab GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目,更多介绍参考维基

【iOS】Jenkins Gitlab持续集成打包平台搭建

Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:[email protected] 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点.更多介绍参考维基介绍. Gitlab GitLab是一个利用R

使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人员)通过手机扫描二维码后就能直接安装测试包. 该需求具有一定的普遍性,基本上所有开发APP的团队都可能会用到,因此我将整个需求实现的过程整理后形成此文,并且真正地做到了零基础上手,到手即飞.开箱即用,希望能对大家有所帮助. 首先,先给大家展示下平台建设完成后的整体效果: 该平台主要实现的功能有3点:

Jenkins 快速搭建持续集成环境

持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要. 持续集成正是针对这一类问题的一种软件开发实践.它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成.而每次的集成都是通过自动化的构建来验证,包括自动编译.发布和测试,从而尽快地发现集成错误,让团队能够更快

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

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

使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以及怎么将自己的模块上传至nexus私服,供其他模块引用.下面将主要介绍如何利用Jenkins.SVN.Tomcat以及Sonar来完成项目的自动化编译.测试和发布,以及检查项目的代码质量. 利器Jenkins     Jenkins源于另外一个持续集成工具Hudson,Hudson在o