我有一个使用 @Component
注释的类,使用 private 构造函数注入(inject),以及用于嵌套注入(inject)的 @Autowired
注释 setter。
为了对其进行单元测试,a workaround I found是使用 @SpringBootTest
和 @DirtiesContext
注释来创建带有注入(inject)组件的 Spring 上下文来测试并在每次测试后“重新连接”它。
但是,我想在没有上下文的情况下对该组件进行单元测试(以避免在每次测试之前都必须构建所有上下文)。
我可以毫无问题地模拟每个嵌套注入(inject)(因为我只想在这里测试 Controller )。
因此我的问题是:如何“获取”该组件的实例?我怎样才能在每次测试前重置它?然后我应该如何获得我的模拟嵌套注入(inject)(我会 - 我猜 - 通过我的 setter “注入(inject)”)?
最佳答案
不要使用私有(private)构造函数。拥有私有(private)构造函数然后使用反射仍然只从外部调用它没有任何好处。如果类只有静态成员以更清楚地表明该类不打算被实例化,或者如果您在同一个类中使用静态工厂方法来创建实例,则您应该只使用私有(private)构造函数。
关于java - 使用私有(private)构造函数对 spring 组件进行单元测试,无需注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487918/