对基于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的具体配置很简单,我就不介绍了。下面我们讲讲怎么用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文件夹的位置。要实现监控其实很简单,我们新建一个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>

这里有些细节我就不讲了,其实都很简单。简单来讲,就是用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)进行监控的方法,布布扣,bubuko.com

时间: 2024-12-28 10:13:20

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

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

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

Ant学习-001-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案

Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. 在日常的 Java 开发应用中,使用较为广泛(类似的项目构建工具还有 maven,感兴趣的可自行了解),同时也多是持续集成框架中的组成成员,因打算打造自己的自动化测试集成框架,因而今天尝试了一下(感谢大神 伟神 提供的 build.xml 文件和此过程中的远程支持,非常感谢!) 今天学习 ant 构建应用,通过 ant 执行 TestNG 测

【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文

一个基于Maven项目Ant的构建模板

一般的我创建的项目都是基于Maven的,但是很多人也喜欢用Ant打包jar,或者war.我一般都会在项目中既包含Maven的pom.xml,也会有ant的build.xml 只要在控制台执行: ? 1 mvn dependency:copy-dependencies 然后执行: ? 1 ant OR ant javadoc 就会打包程序或者生成项目的Javadoc文档. 打包的程序一般在:${project.path}/target/dist/${version}/ JavaDoc文档一般在${

python利用unittest进行测试用例执行的几种方式

利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块:  一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别列出3种方法的具体使用方式:1.通过unittest.main()来执行测试用例的方式: import unittest class UCTestCase(unittest.TestCase):    def setUp(self):        #测试前需

基于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

redis应用基于状态控制的批量任务执行

1. 事务的基本操作 开启事务 multi 作用 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中 执行事务 exec 作用 设定事务的结束位置,同时执行事务.与multi成对出现,成对使用 注意:加入事务的命令暂时进入到任务队列中,并没有立即执行,只有执行exec命令才开始执行 取消事务 discard 作用 终止当前事务的定义,发生在multi之后,exec之前 2. 事务的工作流程 基于特定条件的事务执行---锁 业务场景 天猫双11热卖过程中,对已经售罄的货物追加补货,4个

[转]js中confirm实现执行操作前弹出确认框的方法

原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在删除或其它操作前弹出确定提示,我们有很多方法,最基本的就是利用js自带的函数confirm来操作了 最简单的用法如下: 鼠标事件使用confirm 复制代码 代码如下: <a href="#" onclick= "if(confirm( '是否确定! ')==false)r

JAVA编译和执行过程

Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: Java源码编译机制 类加载机制 类执行机制 Java源码编译机制 Java 源码编译由以下三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成class文件 流程图如下所示: 最后生成的class文件由以下部分组成: 结构信息.包括class文件格式版本号及各部分的数量与大小的信息 元数据.对应于Ja