有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java单元测试带有私有构造函数的spring组件,无需注入

我有一个@Component注释的类,使用私有构造函数注入,还有@Autowired注释的setter用于嵌套注入

为了对其进行单元测试,a workaround I found是使用@SpringBootTest@DirtiesContext注释来创建带有注入组件的Spring上下文,以进行测试,并在每次测试后“重新连接”它

然而,我想在没有上下文的情况下对这个组件进行单元测试(以避免在每次测试之前构建所有上下文)

我可以毫无问题地模拟每个嵌套注入(因为我只想在这里测试控制器)

因此我的问题是:如何“获取”这个组件的实例?如何在每次测试前重置它?那么,我应该如何得到我的模拟嵌套注射(我想我会通过我的setters“注射”


共 (1) 个答案

  1. # 1 楼答案

    不要使用私有构造函数。拥有一个私有构造函数,然后使用反射仍然只从外部调用它,没有任何好处。只有在类只有静态成员以明确该类不是要实例化的情况下,或者在同一个类中使用静态工厂方法来创建实例时,才应该使用私有构造函数