码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-09-20 13:13:43      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

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

我已经介绍了非常多基于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在这里使用的原因能够參看这篇日志

须要指出的是,之前那篇日志里提到的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我们只能使用反斜杠“/”。这是一个小题外话,结论。

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

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

标签:

原文地址:http://www.cnblogs.com/gcczhongduan/p/4823192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!