您的位置:首页 > 理论基础 > 计算机网络

网络调侃

2007-11-09 13:51 218 查看
测试类与被测试类在不同的Plug-in, 但有相同的包名

 

org.myym.myplugin

package org.myym.myplugin;

public class MyClass {
int myMethod() {
return 1;
}
}

 

org.myym.myplugin.test

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();

@Test
public 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成单独的类来测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: