我在运行 JUnit 测试时遇到问题。
它在 Eclipse 中运行良好,但现在我尝试使用 Ant 从命令行运行它。问题是以下代码返回 null:getClass().getPackage()
。
我正在运行 JUnit 测试,如下所示:
<junit fork="no" printsummary="yes" haltonfailure="no">
<classpath refid="junit.classpath" />
<batchtest fork="yes" todir="${reports.junit}">
<fileset dir="${junit.classdir}">
<include name="**/FileHttpServerTest.class" />
<exclude name="**/*$*" />
</fileset>
</batchtest>
<formatter type="xml" />
...
我在 Google 上搜索了此类错误,发现了许多对类加载器不当行为的引用。但我发现没有任何信息可以给我足够的信息来解决我的问题。
我确实需要 getClass().getPackage()
不返回 null。谁能帮我吗?
谢谢, 菲尔
最佳答案
我不确定您要在哪个对象上执行 getClass().getPackage() 操作? 看看 API Javadoc 对此方法的说明,我猜测问题是当您从命令行运行 JUnit 时,JUnit 正在由 Bootstrap 类加载器加载,而您正在执行 getPackage() 操作的对象是由以下之一加载的:子类加载器。
不确定这是否有意义,但因为 getPackage 尝试使用 Bootstrap 类加载器来定位包,而标准类加载器行为不会查看其子级,因此它返回 null。
如果您可以更多地了解正在执行此操作的对象,我可以更具体
关于java - 当我的 JUnit 测试从 Ant 运行时 getPackage() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492915/