我有一个简单的应用程序注入另一个组件
@ComponentScan
@EnableAutoConfiguration
@Configuration
class Application {
static void main(String[] args) {
SpringApplication.run(Application, args)
}
@Bean
AuthorizationServerTokenServices tokenServices() {
return MY THING HERE
}
}
我想要一个快速/最小化的方法来解决这个问题并抓住项目springboot连线(在本例中为tokenServices)。我试图通过TestNG
来验证一些配置/设置/等我还应该说我没有使用任何xml来配置它(使用gradle / groovy / springboot)
答案 0 :(得分:1)
您可以在Spring配置文件的帮助下轻松引入条件bean。
在您的情况下,代码看起来像:
@Configuration
@Profile("tokenService")
public TestTokenServiceConfig {
@Primary
@Bean
AuthorizationServerTokenServices tokenServices() {
//implementation
}
}
您在此类中提供的自定义实现仅在配置文件tokenService
处于活动状态时由Spring使用。为了使Spring使用指定的bean而不是应用程序上下文中存在的任何其他bean,需要使用@Primary
。
另请注意,由于您将在测试环境中使用自定义服务,因此您可以使用Mockito(或您喜欢的任何其他模拟框架)轻松模拟实现
实际的集成测试类似于:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles("tokenService")
class YourIntegrationTest {
@Autowired
AuthorizationServerTokenServices tokenServices;
//test
}