如何解决当包含周期表名称时,DBUnit @DatabaseSetup 与 CSV 加载器不起作用
当我在测试中使用 @DatabaseSetup
时。
标题案例中有一个错误“没有这样的表”。
它正在收集下面的案例。
CSV 加载器
public class CsvDataSetLoader extends AbstractDataSetLoader {
@Override
protected IDataSet createDataSet(Resource resource) throws Exception {
return new CsvDataSet(resource.getFile());
}
}
sql:
create table test
(
id int
);
table-ordering.txt
test
测试.csv
id
1
2
3
测试类
@SpringBoottest(classes = {TestConfig.class})
@RunWith(springrunner.class)
@DbUnitConfiguration(dataSetLoader = CsvDataSetLoader.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,DbUnitTestExecutionListener.class
})
@Transactional
public class JsonDatabaseTest {
@Autowired
JdbcTemplate jdbcTemplate;
@Test
@DatabaseSetup("/table/init")
public void test(){
System.out.println(jdbcTemplate.queryForList("select * from test"));
// printed out 1,2,3
}
}
但它发生了错误'没有这样的表 sh.test'
sql:
create schema sh;
create table sh.test
(
id int
);
table-ordering.txt
sh.test
sh.test.csv
id
1
2
3
测试类
@SpringBoottest(classes = {TestConfig.class})
@RunWith(springrunner.class)
@DbUnitConfiguration(dataSetLoader = CsvDataSetLoader.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,DbUnitTestExecutionListener.class
})
@Transactional
public class JsonDatabaseTest {
@Autowired
JdbcTemplate jdbcTemplate;
@Test
@DatabaseSetup("/table/init") // if comment out this,no error occurs
public void test(){
System.out.println(jdbcTemplate.queryForList("select * from sh.test"));
}
}
当我注释掉代码时,没有错误发生,所以名为“sh.test”的表肯定存在。
但是为什么 @DatabaseSetup
缺少表格?我猜不出来.....
解决方法
很简单。
在设置类
@Bean
H2Connection h2Connection() throws DatabaseUnitException,SQLException{
return new H2Connection(dataSource().getConnection(),"sh");
}
在测试课
@DbUnitConfiguration(databaseConnection = "h2Connection",dataSetLoader = CsvDataSetLoader.class)
现在我不需要将架构名称添加到文件名等中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。