zoukankan      html  css  js  c++  java
  • 基于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 est estprefuse的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:libaspectjweaver-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我们只能使用反斜杠“/”。这是一个小题外话,结论。

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

  • 相关阅读:
    zoj_3710Friends
    javamail例子
    HttpURLConnection类的用法
    发送邮件协议
    栈的定义
    tomcat中添加jconsole服务
    HttpURLConnection类的用法
    javamail例子
    tomcat中添加jconsole服务
    栈的定义
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4823192.html
Copyright © 2011-2022 走看看