Jenkins +JUnit

1.环境

  windows10 专业版

  Jenkins 2.7

  apache-ant-1.9.6

  JDK1.8.0_20

2.整体思路

  jdk:支持ant脚本中的编译、测试等target。

  ant脚本:负责java代码的编译、JUnit。

  Jenkins:调度触发ant脚本的执行。

  

3.开始练兵

  3.1 项目整体结构

com.java.src下面放源码  MessageUtil.java

com.java.test目录下放JUnit测试文件 TestMessageUtil.java

build.xml文件放在根目录下,即位于AntJunit-v1.0目录下,和src位于同一级别。

3.2 项目源码

 1 package com.java.src;
 2
 3 public class MessageUtil {
 4     private String message;
 5
 6        //Constructor
 7        //@param message to be printed
 8        public MessageUtil(String message){
 9           this.message = message;
10        }
11
12        // prints the message
13        public String printMessage(){
14           System.out.println(message);
15           return message;
16        }
17
18        // add "Hi!" to the message
19        public String salutationMessage(){
20           message = "Hi!" + message;
21           System.out.println(message);
22           return message;
23        }
24 }

MessageUtil.java

 1 package com.java.test;
 2
 3
 4
 5
 6 import static org.junit.Assert.*;
 7
 8 import org.junit.Test;
 9
10 import com.java.src.MessageUtil;
11
12 public class TestMessageUtil {
13     String message = "Robert";
14        MessageUtil messageUtil = new MessageUtil(message);
15
16        @Test
17        public void testPrintMessage() {
18           System.out.println("Inside testPrintMessage()");
19           assertTrue(message.equals(messageUtil.printMessage()));
20        }
21
22        @Test
23        public void testSalutationMessage() {
24           System.out.println("Inside testSalutationMessage()");
25           message = "Hi!" + "Robert";
26           assertTrue(message.equals(messageUtil.salutationMessage()));
27        }
28 }

TestMessageUtil.java

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <project name="test" default="test" basedir=".">
 3
 4        <!--配置基本属性-->
 5        <property name="src" value="src"/>
 6        <property name="build" value="build"/>
 7        <property name="lib" value="lib" />
 8        <property name="dist" value="dist"/>
 9        <property name="classpath" location="${build}"/>
10
11        <!--配置测试报告的属性-->
12        <property name="report"   value="report"/>
13        <property name="report.xml"  value="${report}/junit/xml"/>
14        <property name="report.html" value="${report}/junit/html"/>
15
16        <!--配置运行时classpath-->
17        <path id="classpath.run">
18               <pathelement path="${classpath}"/>
19               <fileset dir="${lib}">
20                      <include name="*.jar"/>
21               </fileset>
22        </path>
23
24   <!--配置测试时classpath-->
25        <path id="classpath.test">
26               <path refid="classpath.run"/>
27               <path location="${dist}/lib/test-${DSTAMP}.jar"/>
28        </path>
29
30        <!--任务初始化-->
31        <target name="init" >
32               <tstamp/>
33               <delete dir="${build}"/>
34               <delete dir="${report}"/>
35               <delete dir="${dist}"/>
36               <delete file="${lib}/test-*.jar"/>
37               <mkdir dir="${build}"/>
38               <mkdir dir="${lib}"/>
39               <mkdir dir="${dist}"/>
40               <mkdir dir="${report}"/>
41        </target>
42
43        <!--配置编译任务-->
44        <target name="compile" depends="init">
45               <javac srcdir="${src}" destdir="${build}">
46               <classpath refid="classpath.run" />
47               </javac>
48        </target>
49
50        <!--配置运行任务-->
51        <target name="run" depends="compile, dist">
52          <java classname="com.test.TestCalculator">
53              <classpath>
54                      <path refid="classpath.run"/>
55               </classpath>
56          </java>
57        </target>
58
59        <!--配置JUnit测试,打印测试结果-->
60        <target name="test" depends="compile, dist">
61               <mkdir dir="${report.xml}"/>
62               <mkdir dir="${report.html}"/>
63               <junit printsummary="yes" haltonfailure="no">
64                      <classpath refid="classpath.run"/>
65                      <formatter type="xml"/>
66                      <batchtest fork="yes" todir="${report.xml}">
67                             <fileset dir="${src}" includes="**/Test*.java"/>
68                      </batchtest>
69               </junit>
70               <junitreport todir="${report.html}">
71                      <fileset dir="${report.xml}">
72                             <include name="*.xml"/>
73                      </fileset>
74                      <report format="frames" todir="${report.html}"/>
75               </junitreport>
76        </target>
77
78 </project>

build.xml

3.3 必要的环境配置

junit-4.10.jar复制到%ANT_HOME%\lib目录下。例如,我需复制到D:\SoftInstall\apache-ant-1.9.6\lib下。

这一步很有必要,否则正式运行会报错。

  3.4 配置Jenkins

  新建一个自由风格的job,名字为AntJunit-V1.0。

  源码管理:选择No。利用SVN或git对源码进行管理时,Jenkins总是会把代码拷贝一份到自己的工作空间,然后对备份进行操作,因此本demo忽略源码管理,直接将代码拷贝到Jenkins工作区。

  增加构建步骤:选择Invoke Ant。Targets的名字test来自build.xml中的target名字test(test在build.xml中也是默认执行的target)。

  另外,这里的构建可以用windows脚本执行。二者效果完全一样。

  构建后操作:选择Publish JUnit test result report。测试报告xml填:report/junit/html/TESTS-TestSuites.xml  。

    

  点击「保存」。

4.构建结果

  点击中间的「最新测试结果」,查看详情:

  

5.总结

①完全可以在ant环境下调试好结果再放到jenkins工作空间。因为起实质作用的是ant,jenmins仅仅是调度。ant和jenkins天然有着密切的联系。

②这个demo中ant脚本模拟的是手动编译、测试java代码的过程。ant典型应用还有对Java程序的打包、部署等。当然,ant还有更多应用,有兴趣的童鞋可以搜索ant学习。

6.致谢

本文参考了参考一参考二 ,在此对原作者表示感谢。 

时间: 2024-08-04 22:56:47

Jenkins +JUnit的相关文章

负载,性能测试工具-Gatling

前言 Gatling Gatling是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计. 开箱即用,Gatling由于对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首选工具.由于核心引擎实际上是协议不可知的,因此完全可以实现对其他协议的支持.例如,Gatling目前还提供JMS支持. 代码自定义并且场景资源有效是Gatling的两个基础.并且拥有富有表现力的DSL,自我解释的场景,易于维护,可以保存在版本控制系统中的优点. 只要底层协议(如HTTP)可以以非阻塞

DEVOPS技术实践_08:声明式管道语法

简介 前面简单的做了管道的实验,看了一下的它的效果 声明式管道是Groovy语法中的一个更简单和结构化的语法.下面主要学习明式管道语法. 一 声明式管道的基本结构 以上节的代码为例 node { def mvnHome stage('Preparation') { // for display purposes // Get some code from a GitHub repository git 'https://github.com/jglick/simple-maven-project

DEVOPS技术实践_12:创建持续集成的管道

持续集成不仅包含了Jenkins或者相关其它的CI工具,也包含了包含代码如何控制,采用的什么分支策略等.不同的组织可能采用不同的类型的策略来完成CI,策略类型和项目的类型的有很大的关系. 一 分支策略 1.1 本实验分支 分支能够有效的对代码较好的管理,也是能够把工作的代码和开发环境的代码隔离的有效方式.主要有三种的分支策略类型– master分支– integration 分支– feature 分支 1.master分支 master分支也叫做生产分支,该分支的代码全部是经过测试OK的代码.

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

ruby rspec+jenkins+ci_report持续集成生成junit测试报告

1.加载ci_report gem install ci_reporter_rspec 2.给测试工程编写rakefile require 'ci/reporter/rake/rspec' require 'rspec/core/rake_task' # 设置xml报告路径 ENV['CI_REPORTS'] = 'reports' # 创建名称为spec的任务 RSpec::Core::RakeTask.new(:spec) # RSpec::Core::RakeTask.new(:spec)

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

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

jenkins实战安装java maven项目

一.构建配置搭建 1.创建一个新的项目,选择maven来操作 2.要想构建maven项目,代码库中必须要有一个maven 3.把maven压缩包,解压到一个目录,在当前目录下使用git上传到gitlab项目库 git init git add . git commit -m "maven" git remote add origin [email protected]:YH02/java.git git push origin master 4.在gitlab上面新构建一个项目(例子j

jenkins + jacoco 单元测试覆盖率

1.新建一个maven工程,在src/main/java 下建一个CoverageTest.java 类 package test_junit; public class CoverageTest { public CoverageTest() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub } publi

spring && Cobertura && maven &&junit 单元测试以及测试覆盖率

1. 目的: junit 单元测试,Cobertura   测试覆盖率报告 项目目录结构 2. maven 配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://mave