java - 当我的 JUnit 测试从 Ant 运行时 getPackage() 返回 null

标签 java ant junit classloader

我在运行 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/

相关文章:

java - LayoutInflater.inflate() 返回的 View 也总是 ViewGroup 吗?

java - 在jsp中设置Gson的日期格式

java - Classformat异常的原因是什么?

java - 使用 Proguard 混淆 ActionBarSherlock

jenkins - Jenkins 上的 JUnit 结果超过 1 个图表

java - Java SE/EE/ME 之间的区别?

java - 将此字符串转换为返回 Double

java - 如何在 Netbeans 中添加可共享库?

java - 在测试中再现 SimpleDateFormat 非线程安全

java - 如何在 AbstractTransactionalJUnit4SpringContextTests 测试中测试我的 DAO 更新方法?