Я новичок в Junit. У меня есть реализация для Spring JDBC, где я загружаю DataSource с помощью конфигурации. Используя Datasource и Environmet, я загружаю данные из базы данных, а с помощью Rowmapper я отображаю данные. Я пытаюсь написать модульный тест, а также интеграционный тест для этого сценария.
Мой код
@PropertySource({ "${commonConfig}", "${appConfig}"})
public class DataSourceConfiguration{
@AutoWired
private Environment env
@Bean
public JdbcTemplate jdbcTemplate(final DataSource dataSource){
return new JdbcTemplate(dataSource);}
@Primary
@Bean(destroyMethod = "")
public DataSource dataSource() throws Exception{
// read url,user and password from env and return Datasource
}
}
@Configuration
@EnableBatchProcessing
@Import({ DataSourceConfiguration.class})
@PropertySource({ "${commonConfig}", "${appConfig}"})
public class RunConfigurations<countProcessor>{
@AutoWired
private Enviroment env;
@AutoWired
private DataSource dataSource;
@Bean
public JdbcCursorItemReader<ReportCount> reportCountItemReader() throws Exception{
JdbcCursorItemReader<ReportCount> reader = new JdbcCursorItemReader<>();
try{
String size = env.getProperty("sql.extract_size");
String sql = "select id,count(*) as count from table grou by Id";
if(size != null && Integer.valueOf(size) > 0){
sql += "And rownum<=" + size;}
reader.setSql(sql);
reader.setDataSource(dataSource);
reader.setRowMapper(new CountRowMapper());
}
catch(Exception ex){
e.printStackTrace();
}
}}
public class CountRowMapper implements RowMapper<EPCReportCount>{
@Override
public ReportCount mapRow(ResultSet rs, int rowNum) throws SQLException{
return new ReportCount(rs.getString("id"),res.getLong()));
}
}
I tried writing unit case as below.
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles(profiles = "dev")
@ContextConfiguration(Classes = {DataSourceConfiguration.class})
public class TestConfigurations{
@Test
public void reportCountReaderTest() throws Exception{
RunConfigurations test = new RunConfigurations();
JdbcCursorItemReader<ReportCount> reader = test.reportCountItemReader();
assertNotNull(reader);
}
}
Выдает исключение NullPointerException, поскольку не удается присоединить «Среда» и «Источник данных»
очень ценится, будет очень полезно.