我是春天概念的新手。我正在尝试为该类的方法编写一个Junit。我想模拟从多个位置用作JdbcTemplate
的spring框架@Autowired
类。但我不想在每个班级中使用@Mock
。有什么方法可以模拟这个类,并且可以使用@Autowired
从多个位置使用。
先谢谢。
答案 0 :(得分:0)
某种非答案,但我不建议在单元测试时使用Spring
到inject dependencies
。如果您使用的是constructor injection
,那么您只需从单元测试中调用构造函数,然后手动传入模拟或测试双精度。这使得从单元测试中非常明确和明确地提供了为测试目的提供的依赖性。如果您使用setter注射,您也可以这样做。不要通过Spring
实现正在测试的类,只需从您的junit
测试类构建测试类,并强制提供所需的依赖项。
答案 1 :(得分:0)
定义一个特定于您的测试的弹簧配置文件(例如“test”),在该配置文件中使用模拟库和注释JdbcTemplate
创建@Profile("test")
bean。这样,只有在“测试”配置文件处于活动状态时才会创建此模拟。
将注释@Profile("!test")
添加到真实的JdbcTemplate
bean中,这样就不会在测试配置文件中创建它。
然后在测试类的顶部添加@ActiveProfiles("test")
注释。