0

У меня есть DI цепь (DBCONFIG -> Repository -> Component -> RestController)Spring загрузки - DI - Модульное тестирование

DataSource в DBCONFIG является AutoWired в Repository. Репозиторий автоматически связан с компонентом ... и т. Д.

класс Application - CtnStatusCheckerApplication.class

DataSource создается подстановок JNDI ("eis.OT4.SBL_DS"). Я издеваюсь над DataSource и помещаю его в дерево JNDI Spring.

Это мое модульное тестирование (в 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 должен быть инициализирован с помощью какого класса? объект верхнего уровня или каждый отдельный фасоль? (Например, службы, компоненты, Repository и т.д.)

ответ

0

Pls попробовать это: -

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = CtnStatusCheckerApplication) 
@WebAppConfiguration 
class SiebelRepositoryTest { 
Смежные вопросы