这个问题是关于混杂突变测试框架(http://jumble.sourceforge.net/)
我正试图混入我工作中的项目。我在其中一个项目的类上运行混乱,它在某些类上执行突变,但对于其他一些类它告诉
“测试班坏了”
尽管我使用 ant 任务运行这些测试类并且它们运行正常。
我试图知道出了什么问题,并开始在 Eclipse 上以调试模式运行 jumble,以处理 jumble 报告其测试被破坏的每个类。当我调试这些类时,我进入了 junit 类 TestResult 的实例字段,因此我可以看到 junit 在 jumble 运行测试类时报告的错误和失败的描述,因为 jumble 告诉我“测试类已损坏”但它没有告诉为什么它说测试类坏了,所以我需要调试才能知道发生了什么。我观察到的问题和错误详细信息是失败的测试混乱的结果,具体如下:
(由于我工作的公司的法律限制,我不能发布某些代码,但我会尽量解释清楚)
对于“转发器”类,我在调试模式下运行 jumble 并且运行平稳并且完美地使突变。这是最让我惊讶的情况,因为当与 ant task jumble 一起运行时,会报告我“测试类已损坏”,但在 eclipse 中的调试模式下运行正常。
对于 Action 类和许多其他类,在调试模式下,当运行测试类并检查错误描述时会发生错误,错误是
java.lang.ClassNotFoundException:org.junit.rules.ExpectedException。
我在 junit jar 上有那个类,它的路径可用于 eclipse 调试模式和 ant 任务。此外,这个类位于 selenium 框架的一个 jar 中,它的依赖项我认为可能是类加载器无法决定要加载哪个版本的类。但我不确定。
对于模块类,我做同样的事情:当测试由 jumble 运行并完成执行时,检查 TestResult junit 类上可用的错误消息。对于这门课,我得到:
java.lang.LinkageError:加载约束违规:加载程序“com/reeltwo/jumble/mutation/MutatingClassLoader@5b8d5b8d”先前为加载程序“sun/misc/Launcher$ 定义的名称为“org/hamcrest/Description”的不同类型启动加载AppClassLoader@7fce7fce"
这个错误让我大吃一惊。这让我觉得 Jumble 有自己的类加载器,也许它会以某种方式成为我的一些麻烦的根源。
我真的很感激任何帮助,马科斯