Привет. Я пытаюсь запустить мой модульный тест, используя SpringRunner.class
.Я создаю новый экземпляр для jdbcTemaplte в моем тестовом классе.Я использую H2 DB для модульного тестирования, и я могу использовать экземпляр jdbcTemplate для создания или обновления таблиц. Он работает нормально.но когда он идет к фактическому классу, который он тестирует, jdbcTemplate имеет значение null, которое выдает NullPointerException
Ниже приведен код:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyClassTest {
@InjectMocks
private ClassToTest classToTest;
@Autowired
private JdbcTemplate jdbcTemplate;
@org.springframework.context.annotation.Configuration
static class Config {
@Bean(name = "jdbcTemplate")
public JdbcTemplate orderService() {
BasicDataSource dataSourceConfig = new BasicDataSource();
dataSourceConfig.setDriverClassName("org.h2.Driver");
dataSourceConfig.setUrl("jdbc:h2:mem:db");
dataSourceConfig.setUsername("someUserName");
dataSourceConfig.setPassword("somePassword");
return new JdbcTemplate(dataSourceConfig);
}
}
@Before
public void setUp() throws Exception {
//Use the jdbcTemplate to create Queries in H2 which works fine.
}
}
ClassToTest.java
public class ClassToTest{
@Autowired
JdbcTemplate jdbcTemplate;
//someMethod in DAO using jdbcTemplate to make sql Operations.
}
Шаблон JDBC является пустым в ClassToTest и выдает исключение nullPointerException при попытке протестировать метод.
Я просто не уверен, почему Autowire не связывает созданную мной зависимость.Я пытался использовать @Primary, чтобы явно использовать этот jdbcTemplate при необходимости, но не уверен, почему он не работает.
Любые предложения здесь полезны.Заранее спасибо.