您好我正在构建一个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运行,这运行正常。我检查了所有依赖项,它们没问题。任何帮助将不胜感激;)
答案 0 :(得分:0)
最常见的方法是将测试包设为Fragment
而不是Plugin
,并将其主机插件设置为包含您正在测试的类的插件。
这意味着该片段使用主机插件的ClassLoader,因此应该可以访问这些类。