基于JUnit和Ant测试程序正在运行使用Kieker(AspectJ)监测方法

这篇日志的目的从标题里能够看出来。这也是我们实验须要,必须总结一下,方便其它师弟师妹在这个基础上做实验。

我已经介绍了非常多基于Kieker的监控方法,这里以Prefuse这个开源可视化Java框架为例,总结怎么基于JUnit和Ant实现对开源软件自带測试用例运行过程的监控。

这个链接中,选择最新的版本号下载(Prefuse已经有些年头没更新了。只是这个框架确实还不错)。

解压之后用Eclipse打开其build.xml,发现这个项目的build.xml结构还比較奇葩。假设执行ant all,能够生成全部的class文件和JAR包(还得简单解决一下字符集的问题)。细致看一下,发现确实将全部代码编译了。可是build.xml里面没有target是关于測试的。我们注意到解压后有一个test目录。里面确实有些測试用例。比如这里:prefuse-beta\test\test\prefuse的All_Prefuse_Tests.java,打开之后看到:import junit.framework.Test;
说明使用的是JUnit 3,随便找到一个JUnit 3的JAR包,放到lib文件夹下。然后我们就能够自己编译这些測试类了。

首先,我们自己在build.xml文件里添加一个target(须要相应地在build文件夹下建立一个testcase文件夹):

<target name="compile-testcase">
    <javac
        classpath="lib/junit.jar:build/prefuse.jar:build/demos.jar"
        srcdir="test"
        destdir="build/testcase"/>
</target>

这个target的详细配置非常easy,我就不介绍了。以下我们讲讲怎么用Kieker监控这些測试用例的运行。首先,像这篇日志里讲的这样:将”kieker-1.4″下”dist”目录下的”kieker-1.4.jar”和”lib”目录下的”aspectjweaver-1.6.11.jar”和”commons-logging-1.1.1.jar”三个jar包拷贝进解压后目录中的”lib”目录下。我们稍晚时候再说说META-INF目录的位置。

要实现监控事实上非常easy,我们新建一个target,名字随便起:

<target name="test2" depends="compile-testcase">
    <junit
        printsummary="yes"
        errorProperty="test.failed"
        failureProperty="test.failed"
        fork="true"
        haltonfailure="yes">
        <formatter type="plain"/>
        <jvmarg value="-XX:-UseSplitVerifier"/>
        <classpath path="lib/junit.jar:lib/commons-logging-1.1.1.jar:lib/kieker-1.4.jar:build/testcase:build/prefuse/classes:build/demos/classes"/>
        <jvmarg value="-javaagent:lib\aspectjweaver-1.6.11.jar"/>
        <test todir="test-results" name="test.prefuse.All_Prefuse_Tests"/>
    </junit>
    <fail message="Tests failed!" if="test.failed"/>
</target>

这里有些细节我就不讲了,事实上都非常easy。

简单来讲,就是用aspectjweaver这个jar包做Javaagent,然后在classpath中包括kieker的jar包,以及測试类和被測试类。-XX:-UseSplitVerifier在这里使用的原因能够參看

p=406" style="border:0px; font-family:inherit; font-style:inherit; font-weight:inherit; margin:0px; outline:0px; padding:0px; vertical-align:baseline; color:rgb(25,130,209); text-decoration:none">这篇日志

须要指出的是,之前那篇日志里提到的META-INF目录,简单来讲,放到classpath中就能够。所以事实上我们放到build/demos/classes这种目录下即可(由于在上面target中已经将其包括到了classpath中),问题是,我们放到build.xml目录下能够吗?答案是能够的。将其放到解压后根目录下。然后再建立一个test-results目录(和这个相应:<test
todir=”test-results”),执行ant test2,就能够看到測试用例的执行结果了。我们能够看到,执行了34个測试用例,当中fail了一个。同一时候也能够看到生成了监控数据。

最后总结一下META-INF这个问题。实践证明:在Windows系统中。在基于Ant运行Java class的时候,会自己主动将build.xml文件夹所在文件夹增加classpath,可是假设通过Java命令行,则须要增加“.”来增加当前文件夹。

可是。我又測试了一下在Mac OS X下的结果,发现必须增加“.”来增加当前文件夹,另外,Windows中路径的正反斜杠在Ant中我们能够。但在Mac OS X我们只能使用反斜杠“/”。这是一个小题外话,结论。

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-10-02 12:19:10

基于JUnit和Ant测试程序正在运行使用Kieker(AspectJ)监测方法的相关文章

对基于JUnit和Ant的测试用例执行过程使用Kieker(AspectJ)进行监控的方法

这篇日志的目的从标题里可以看出来.这也是我们实验需要,必须总结一下,方便其他师弟师妹在这个基础上做实验. 我已经介绍了很多基于Kieker的监控方法,这里以Prefuse这个开源可视化Java框架为例,总结怎么基于JUnit和Ant实现对开源软件自带测试用例执行过程的监控.在这个链接中,选择最新的版本下载(Prefuse已经有些年头没更新了,不过这个框架确实还不错). 解压之后用Eclipse打开其build.xml,发现这个项目的build.xml结构还比较奇葩.如果运行ant all,可以生

【Junit_Ant】使用Eclipse自带的Junit和Ant,生成测试报告

使用Eclipse自带的Junit和Ant,生成测试报告 1.点击要测试的工程,右击,选择Export 2.在弹出的页面里,点击General,选择Ant Buildfiles,点击Next 3.在下一个页面,选择要测试的工程,填写ant的配置文件名称,build.xml,测试报告生成的文件夹,如report,点击finish,则会在根目录下生成一个ant的build.xml文件. 4.在工程的根目录下新建一个文件夹,report(这个文件夹要自己建,不会自动生成) 5.右击build.xml文

Ant打包可运行的Jar包(加入第三方jar包)

本章介绍使用ant打包可运行的Jar包. 打包jar包最大的问题在于如何加入第三方jar包使得jar文件可以直接运行.以下用一个实例程序进行说明. 程序结构: 关键代码: package com.alfred.main; import com.alfred.bean.User; import com.alfred.util.ProjConfig; import com.thoughtworks.xstream.XStream; public class Main { public static

spring 以Ant Build方式运行build.xml文件,报warning: &#39;includeantruntime&#39; was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 的解决办法

Buildfile: F:\experience\spring_pdf\sourcecode\example1\build.xml compile: [javac] F:\experience\spring_pdf\sourcecode\example1\build.xml:25: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable

基于JAXB的Ant自定义Task

官方Manual链接: http://ant.apache.org/manual/index.html Ant.XSD.JAXB.XML的基本概念这里就不介绍,网上随便搜搜都有一大把,本文主要讲解利用XSD生成JAXB类来自定义Ant Task,自动完成XML的解析工作,提高开发效率. 开发工具采用Eclipse. 第一步,在Eclipse中创建Java项目,这里取名为WritingAntTaskDemo. 第二步,创建xsd文件,这里我在项目中jet.demo.xsd的包下创建了名为MyTas

Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法

原文:Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我们讲了Raspberry安装Win10 IoT系统及搭建Visual Studio 2015开发环境的方法(http://www.cnblogs.com/cloudtech/p/5562120.html)

Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具

Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助. mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等. http://www.kxtry.com/archives/338

Linux运行与控制后台进程的方法:nohup, setsid, &amp;, disown, screen

Linux运行与控制后台进程的方法:nohup, setsid, &, disown, screen 转自http://heylinux.com/archives/1282.html#more-1282 我们经常会碰到这样的问题,用ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络等的不稳定导致任务中途失败.这是由于在用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程.解决办法有两种:让进程忽略HUP信号,或让进程运行在新

usb设备运行不正常的解决方法(转)

add by zhj:上午鼠标还用的好好的,下午就不能用了,插上之后提示“跟这台计算机连接的一个usb设备运行不正常”,尼玛,什么情况?我今天没安装软件啊,换了个USB接口也不行,在另一台电脑上试还是不行,在我想把这个鼠标扔了的时候,发现了下面的帖子,用第一种方法试了试.把插头拔下来,用钥匙连接了一下正负线,然后把鼠标拔出重新插上,OK,果然牛逼,好了,不用重启电脑. 原文:http://itbbs.pconline.com.cn/diy/16197514.html 很多朋友碰到无法识别的USB