微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当包含周期表名称时,DBUnit @DatabaseSetup 与 CSV 加载器不起作用

如何解决当包含周期表名称时,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 举报,一经查实,本站将立刻删除。