当作为插件测试运行时,不同项目中的重复包名会导致InvalidAccessException

时间:2015-05-14 09:47:16

标签: java eclipse junit eclipse-plugin

您好我正在构建一个eclipse插件项目,我需要编写测试来测试一些包私有类,但是测试需要放在一个不同的插件项目中,该项目在其依赖项中有实际的应用程序插件。

为了访问包私有类,我将测试包命名为与实际的相同。问题是如果我将它作为JUnit插件测试运行,我会得到一个InvalidAccessException

java.lang.IllegalAccessError: tried to access class framework.resourcepack.datamodel.IResourceModel from class framework.resourcepack.datamodel.testCreateModel
at framework.resourcepack.datamodel.testCreateModel.testCreateLanguageModel(testCreateModel.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:255)
at junit.framework.TestSuite.run(TestSuite.java:250)
at ...

如果我作为标准junit运行,这运行正常。我检查了所有依赖项,它们没问题。任何帮助将不胜感激;)

1 个答案:

答案 0 :(得分:0)

最常见的方法是将测试包设为Fragment而不是Plugin,并将其主机插件设置为包含您正在测试的类的插件。

这意味着该片段使用主机插件的ClassLoader,因此应该可以访问这些类。