Spring Boot Unit Test

Overwrite Application

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//  business code
@SpringBootApplication
@EnableScheduling
@EnableConfigurationProperties
class GatewayApplication {
@Bean
fun getDisruptor(): Disruptor {
return disruptor
}
}

// unit test code
@SpringBootApplication
class NoProducerApplication {
@Primary
@Bean
fun getDisruptor(): Disruptor {
return disruptor
}
}

// 配合注解使用
// @SpringBootTest(classes = [NoProducerApplication::class])

主要特别注意的是,假如在 unit test 的方法名为 getDisruptor,而在业务代码中的方法名为 getDisruptor2,那么在跑 unit test 的时候,两边的代码都会执行。因此需要保持两边的方法名一致。