Spring JDBC junit для RowMapper, который загружается DatasourceConfiguration - PullRequest
0 голосов
/ 01 апреля 2019

Я новичок в 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, поскольку не удается присоединить «Среда» и «Источник данных»

очень ценится, будет очень полезно.

...