弹簧启动 - DI - 单元测试

时间:2015-09-23 10:54:37

标签: spring unit-testing dependency-injection spring-boot mockito

我有DI链(DbConfig - >存储库 - >组件 - > RestController)

DBConfig中的DataSource在存储库中是自动连接的。存储库在组件中自动连接等...

应用程序类 - 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 - 为什么sielRepository中的sblDataSource为null? 2 - 在这种情况下,应该用哪个类初始化@SpringApplicationConfiguration?顶级对象或每个单独的豆? (如服务,组件,存储库等)。

1 个答案:

答案 0 :(得分:0)

请试试这个: -

string url = driver.Url;
string jid = url.Substring(url.Length-8,8)
Console.WriteLine(jid);