EclEmma java.lang.NoClassDefFoundError: com/vladium/emma/rt/RT 错误解决

1.在测试一个单元测试时,先用junit测试,能够通过。又想看一下覆盖率,就用EclEmma来再次运行,发现测试不能运行。网上一找 “ 对于 Java Application 和 JUnit 类型的覆盖测试,我们可以在配置对话框中选中“In-place instrumentation”项来指定直接修改 Workspace 中的 .class 文件和 .jar 文件。”

这样的信息。因为通常代码覆盖测试工具都需要对被执行的代码进行修改。那就在图 6  用于结合多次覆盖测试结果的工具栏按钮

再Open Coverage Dialog...

出现

图 9  EclEmma 的配置页面

选中“In-place instrumentation”, 再次点击,测试通过。

但又用junit测试时就出现了java.lang.NoClassDefFoundError: com/vladium/emma/rt/RT异常,这是怎么回事呢?

通过查看Emma的工作原理:

  1. 预插入模式:对程序进行测量之前,需要采用 Emma 提供的工具对 class 文件或者 jar 文件进行修改。修改完成之后的代码可以立刻被执行。覆盖测试的结果将会被存放到指定的文件中。
  2. 即时插入模式:即 时插入模式不需要事先对代码进行修改。相反,对代码的修改是通过一个 Emma 定制的 Class loader(类载入器)进行的。这种方式的优点很明显,我们不需要对 class 或者 jar 文件进行任何修改。缺点是我们为了获得测试的结果,需要用 Emma 提供的命令 emmarun 来执行 Java 应用程序。

就知道解决方法了:

把测试相关的类重新编译,就可以通过junit的测试了。

 

参见:

使用 EclEmma 进行覆盖测试

http://www.ibm.com/developerworks/cn/java/j-lo-eclemma/index.html

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值