【发布时间】:2021-05-27 15:36:29
【问题描述】:
我正在测试一个扩展抽象类 B 的类 A。B 类有一个私有成员 M,我想设置它以进行测试。
- 据我所知,问题的第一部分是从 A 类中检索 B 类。为此我尝试了 getSuperclass,我认为这可能不是正确的方法。虽然,我可以使用 ``ReflectionTestUtils.findfield()``` 检索所需的字段,但不能使用设置字段。
- 其次,当我尝试设置字段 (
ReflectionUtils.setField(field_M, B, M_to_be_set)) 时,它基本上以以下异常结束: java.lang.IllegalArgumentException:无法将 M 字段 M 设置为 java.lang.Class 我尝试设置字段,但无法找到字段本身。
谢谢
【问题讨论】:
-
你正在尝试这个单元测试吗?如果是这样,你应该模拟 B,否则你是集成测试。在实际工作的应用程序中如何设置 B 的私有成员?如果您是真正的集成测试,那么该依赖关系显然是集成上下文的一部分,并且首先应该包含私有成员的任何集合并独立于 A 进行测试。它将作为 B 与任何集合之间集成的一部分进行测试首先是私有成员。
标签: java unit-testing testing junit reflection