【发布时间】:2021-04-29 14:03:57
【问题描述】:
我正在尝试使用 Quarkus 应用程序中的 FieldSetter 为我的测试类中的私有字段设置值(Quarkus 版本:1.5.2.Final 和 JDK 版本:11)
主类
@ApplicationScoped
public class TokenService{
@Inject @RestClient RestClientInterface client;
private String someVariable;
public String someMethod(){}
}
测试类
@QuarkusTest
public class TokenServiceTest{
@Inject TokenService service;
@InjectMock @RestClient RestClientInterface client;
@Test
public void someMethodTest(){
FieldSetter.setField(service, "someVariable", "someValue");
}
}
但是 FieldSetter 正在抛出 NoSuchField 错误。请帮忙。 也尝试过
service.getClass().getdeclaredField("someVariable")
但同样的问题。
提前致谢。
【问题讨论】:
-
为什么需要在单元测试中设置私有字段?可能有正当理由,但很可能是设计存在缺陷。
-
那些在实时工作流中初始化的私有字段有一些到期时间,所以我每次访问该方法时都会检查它是否仍然有效。因此,在测试用例中,我需要为这些私有字段注入一些值。
标签: java reflection mockito junit5 quarkus