mujava 的安装与使用
mujava 是一款用于变异测试的工具,官网上附有完整的安装和使用教程:muJava Home Page (gmu.edu)。但在实际操作中,还是会遇到许多种问题。现将我实践过的安装教程详述如下。
文件下载
官网上下载这些东西:
实际上,mujava.config 里面就一句话。自己复制过来在新建一个就行。
mujava.config 里的默认内容:
1 | MuJava_HOME=C:\offutt\mujava |
目录准备
这部分主要是动手环节(官网上就是动手…)。在你想让 mujava 安装的地方,新建一个目录。比如:D:\mujava。
在 D:\mujava 里新建 4 个文件夹:
classes
:存放编译好的 Java 源程序.class 文件result
:mujava 生成的结果文件(变异体)src
:待测的 Java 程序代码testset
:JUnit 测试用例的.class 文件
把 mujava.config
放到 D:\mujava 中。里边的内容改为:
1 | MuJava_HOME=D:\mujava |
在 D:\mujava 中新建两个.txt 文件,编写后续用到的命令。写好后改为.cmd 文件。(注意,这里保证运行的 mujava 目录要包含 mujava.config)
1 | GenMutants.cmd: java mujava.gui.GenMutantsMain |
把涉及到的包全部放进来(D:\mujava 下):JUnit、Hamcrest、mujava.java、openjava.java、tools.java。
JUnit、Hamcrest 包另外在相应官网上下载;mujava.java、openjava.java 是刚刚在 mujava 官网上下的;tools.jar 在你配置的 Java 环境中自带的包(是 Java 的标准文件)。
比如我的 tools.jar 在这里(我的 Java 版本为 1.8,据说 Java 版本过高可能导致失败):
关于这部分,官网是这样描述的:
The Java CLASSPATH must include two µJava jar files and one standard Java jar file. tools.jar is standard with Java (JDK) compilers and is probably located in the “JavaHome/lib/” directory. The two µJava files are mujava.jar and openjava.jar, which are downloaded from this site.
上述引用中,所谓的 JavaHome 可以在环境变量里查询,一般你安装 Java 环境时都会配的。
这样,最终你的 D:\mujava 会是这样的:
环境
打开控制面板,搜索环境变量:
编辑系统环境变量。如果没有 CLASSPATH 就新建一个:
比如这样:
使用
在 src 放入需要测试的 Java 源文件,注意包结构!
在 classes 放入待测试文件编译好的.class 文件,注意包结构!
在 testset 放入 JUnit 测试文件编译好的.class 文件,注意包结构!
双击运行 GenMutants.cmd,出现以下 GUI 界面:
运行结果:
双击运行 RunTest.cmd,弹出另外一个 GUI 界面。开始进行测试:
点击 RUN 即可运行。等待电脑风扇猛转后,结果就生成了。
(不知为什么,JUnit 测试用例采用参数化的方式的话会报错。。。)
注意,小黑框里面会显示程序的运行状态,如果报错(比如找不到 JUnit、Hamcrest 包时)记得检查环境变量有没有配置好。
运行结果:
详细的测试结果可在 TestResult.txt 中查看。
其他问题
目录结构问题
关于目录结构问题,就是你在测试文件、被测试文件的包的关系,复制到 mujava 相应文件夹时要一致。否则会报错。下图是正确的例子:
图片缺失
如果在运行测试用例杀死变异体过程中,出现诸如找不到类、空指针异常,可以试试重新运行命令多试几次。。
检查 Java 版本
官网:Potential problems**: We have identified several potential problems with installing µJava.**
It is important that the MuJava_HOME variable NOT have a trailing slash. This will confuse µJava.
If you have a different version of the java compiler and the JVM, µJava may get confused. This happens sometimes when a new application on your computer updates the JVM. If you have problems compiling or killing mutants, we suggest deleting all Java components and reinstalling the latest version.
If your tools.jar file is out of date (pre Java 1.4, we think), parts of µJava may not work.
杀不死变异体
有少数童鞋反映测试用例杀不死变异体,MS 得分为 0%。
在确认你的测试类编写对的情况下,请再次做这个检查:检查你的环境变量里,是不是把 classes 文件夹写了进去。请确保 CLASSPATH 里边没有D:/mujava/classes 文件夹。
参考链接
- mujava 官网:muJava Home Page (gmu.edu)
- 安装和使用方法(中文):使用muJava进行变异测试_wkw1125的博客-CSDN博客_mujava