java jumble突变测试框架可能存在类加载器问题

时间:2012-01-24 14:36:19

标签: java integration-testing mutation-testing

这个问题是关于混乱变异测试框架(http://jumble.sourceforge.net/

我正试图混淆我工作的项目。 我对其中一个项目的类进行了混乱,并且它在某些类上执行了突变,但对于其他一些类,它告诉

  

“测试类被打破”

尽管我使用ant任务运行这些测试类并且运行正常。

我试图知道出了什么问题,并开始在eclipse上的调试模式中运行混乱,因为混乱的每个类都报告他们的测试被破坏了。 当我调试这些类时,我进入了junit类TestResult的实例字段,所以我可以看到junum在jumble运行测试类时报告的错误和失败的描述,因为jumble告诉我“测试类被破坏了”但它没有告诉为什么它说测试类经纪,所以我需要调试才能知道发生了什么。我观察到的问题和错误细节是失败测试失败的结果,其中包括以下几点:

(由于我工作的公司的法律限制,我无法发布某些代码,但我会尝试更加解释,我可以)

对于“转发器”类,我在调试模式下运行混乱并且运行平稳并完美地完成突变。这种情况让我感到惊讶,因为这与使用ant任务jumble运行时报告我“测试类已损坏”,但在eclipse的调试模式下运行正常。

对于Action类以及许多其他类,在调试模式下运行测试类时发生错误,并且在检查错误描述时,错误是

  

java.lang.ClassNotFoundException:org.junit.rules.ExpectedException。

我在junit jar上有这个类,它的路径可用于eclipse调试模式和ant任务。 此外,这个类位于selenium框架的jar中,具有依赖性 我认为可能是类加载器无法决定要加载的类的版本。但我不确定。

对于类Module,我做同样的事情:当jumble运行测试并完成执行时,检查TestResult junit类上可用的错误消息。对于这堂课,我得到:

  

java.lang.LinkageError:加载约束违规:加载程序“com / reeltwo / jumble / mutation / MutatingClassLoader @ 5b8d5b8d”先前为加载程序“sun / misc”定义的名称为“org / hamcrest / Description”的其他类型启动加载/发射$ AppClassLoader @ 7fce7fce“

这个错误让我感到惊讶。这让我觉得Jumble有自己的类加载器,也许它可能是我的一些麻烦的源头。

我真的很感激任何帮助, 马科斯

1 个答案:

答案 0 :(得分:0)

Jumble使用自定义类加载器来插入突变,这可能是导致某些问题的原因。

它还嵌入了自己的junit版本,这可能是你的classnotfound异常的原因。没有更多的信息,很难肯定地说。

您可以尝试通过Jumble邮件列表询问开发人员,或者尝试让PIT尝试http://pitest.org

PIT使用instrumentation API而不是使用类加载器插入突变,不嵌入JUnit并且通常要快得多。我写了它,所以可能非常有偏见。