首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

Run as JUnit Plug-in test 疏失:java.lang.IllegalAccessError

2012-12-27 
Run as JUnit Plug-in test 出错:java.lang.IllegalAccessError测试类与被测试类在不同的Plug-in, 但有相

Run as JUnit Plug-in test 出错:java.lang.IllegalAccessError

测试类与被测试类在不同的Plug-in, 但有相同的包名

?

org.myym.myplugin

package org.myym.myplugin;import static org.junit.Assert.*;import org.junit.Test;import org.myym.myplugin.MyClass;public class MyClassTest {MyClass myClass = new MyClass();@Testpublic void myMethodReturnOne(){assertEquals(1, myClass.myMethod());}}

?

当Run as JUnit test时没有错误, 但当Run as JUnit Plug-in test时报错:java.lang.IllegalAccessError

?

这是因为Eclipse的插件机制,MyClass和MyClassTest被装载在各自不同的ClassLoader中,从而不能调用包可见的方法。

?

可以将org.myym.myplugin.test创建成org.myym.myplugin的fragment使得装载在同一个ClassLoader中. see http://www.modumind.com/2007/06/20/unit-testing-plug-ins-with-fragments/

?

比较简单而彻底的方法是不要利用package visible来测试方法。如果该方法比较复杂必须单独测试,可以将它Extract成单独的类来测试。

热点排行