嗨,我目前正在构建一个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运行,则运行良好。我检查了所有依赖关系,它们很好。任何帮助将非常感激 ;)
解决此问题的最常见方法是将测试包设置为aFragment
而不是a Plugin
,并将其主机插件设置为包含要测试的类的主机插件。
这将意味着该片段使用主机插件的ClassLoader,因此应该可以访问这些类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句