0

我有DI鏈(DBCONFIG - >庫 - >組件 - > RestController)在對DBConfig春天開機 - DI - 單元測試

數據源的儲備庫自動裝配。存儲庫在Component ...等中是AutoWired。

應用類 - CtnStatusCheckerApplication.class

數據源創建查找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 - 爲什麼sblDataSource siebelRepository空裏面? 2 - 在這種情況下,應該使用哪個類來初始化@SpringApplicationConfiguration?頂級對象還是每個Beans? (如服務,組件,庫等)

回答

0

請試試這個: -

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = CtnStatusCheckerApplication) 
@WebAppConfiguration 
class SiebelRepositoryTest {