Spring Boot - DI - 单元测试
Posted
技术标签:
【中文标题】Spring Boot - DI - 单元测试【英文标题】:Spring boot - DI - Unit testing 【发布时间】:2015-12-20 15:50:22 【问题描述】:我有 DI 链(DbConfig -> Repository -> Component -> RestController)
DBConfig 中的数据源在存储库中是自动连线的。 Repository 在 Component... 等中是 AutoWired。
应用程序类 - CtnStatusCheckerApplication.class
DataSource 创建查找 JNDI ("eis.OT4.SBL_DS")。我正在模拟 DataSource 并将其放入 Spring JNDI 树中。
这是我的单元测试(在 Groovy 中):
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CtnStatusCheckerApplication.class)
class SiebelRepositoryTest
@Autowired
SiebelRepository siebelRepository
@Autowired
@Qualifier("sblDataSource")
DataSource sblDataSource
@BeforeClass
public static void setUpClass() throws Exception
DataSource ds = mock(DataSource.class)
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder()
builder.bind("eis.OT4.SBL_DS",ds)
builder.activate()
@Test
public void testContext()
assert siebelRepository != null
assert sblDataSource != null
println Whitebox.getInternalState(siebelRepository,"sblDataSource") // prints "null" why?
1 - 为什么 siebelRepository 中的 sblDataSource 为空? 2 - 在这种情况下,@SpringApplicationConfiguration 应该用哪个类初始化?***对象还是每个单独的 Bean? (如服务、组件、存储库等)
【问题讨论】:
【参考方案1】:请试试这个:-
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CtnStatusCheckerApplication)
@WebAppConfiguration
class SiebelRepositoryTest
【讨论】:
以上是关于Spring Boot - DI - 单元测试的主要内容,如果未能解决你的问题,请参考以下文章
spring boot 学习之二(spring boot单元测试)
spring boot10.spring boot下的单元测试