java - 如何单元测试 getClassLoader() 返回 null

标签 java unit-testing junit classloader junit4

根据 Class 的 javadoc

Returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader.

当 getClassLoader 返回 null 时,我们必须对逻辑进行单元测试。我们正在使用 Java 的 sun 实现(Java 6)。我们怎样才能做到这一点。

最佳答案

我的第一个想法是模拟 Class 对象,但正如另一个问题中提到的:Mocking a class object using Mockito and PowerMockito

你不能。像 Mockito、Easymock(和 Powermock)这样的模拟对象库无法模拟引导类加载器加载的类,因为在加载模拟对象库时它们已经被加载了。所以它无法操作字节码。

因此,一个简单的解决方法是查看是否可以使用引导类加载器加载的类,例如 java.langjava.netjava.io 中的类)。

例如String.class.getClassloader()将返回null

如果您无法轻松使用引导类进行测试,那么我不会太担心该分支,因为它无法在生产中执行。

关于java - 如何单元测试 getClassLoader() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27352137/

相关文章:

java - em.Persist(book) 不会更新实体

c++ - 如何让 STL 抛出异常而不是断言?

c# - 我如何对这个(正确地)抛出异常的异步方法进行单元测试?

unit-testing - Grails - 什么是 mixin 及其在 Grails 测试中的意义?

junit - 你会如何测试输出复杂的东西?

java - Websocket Java 服务器。不发送消息也不接收

java - SpringBoot2 配置 JOOQ MariaDB : "required a bean of type ' javax. sql.DataSource' 找不到”

java - 如何自动生成新的单元测试ant报告

java - 用于 Java 1.4 的 JUnit

java - 从文件中读取并选择按价格对存储的对象数组进行排序不起作用