读书人

Run as JUnit Plug-in test 疏失:jav

发布时间: 2012-12-27 10:17:09 作者: rapoo

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成单独的类来测试。

读书人网 >Ruby Rails

热点推荐