AssertJ-DB冻结在春季启动集成测试
问题描述:
我有以下的集成测试:AssertJ-DB冻结在春季启动集成测试
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class ServiceTestIT {
@Autowired
private ServiceUnderTest service;
@Autowired
private DataSource dataSource;
@Before
public void setup() {
Changes changes = new Changes(new Table(datasource, "SOME_TABLE"));
changes.setStartPointNow();
}
@Test
public void test() {
service.doSomething();
changes.setEndPointNow();
// assert database changes with changes object
}
}
当我运行这个测试它冻结在变化起始点行@Before方法:
changes.setStartPointNow();
我已经发现测试在org.assertj.db.type.Changes#setStartPointNow
上的t.getRowsList();
行冻结,但我不知道如何解决它。
当我删除@Transactional
注释,一切工作正常,没有冻结,但测试不能正常工作。
有什么办法解决这个问题,保存@Transactional
注释?
答
请尝试:
@Test
public void test() {
Changes changes = new Changes(new Table(datasource, "SOME_TABLE")).setStartPointNow();
service.doSomething();
changes.setEndPointNow();
// assert database changes with changes object
}
答
在我的情况的问题是大表。我正在观看桌子上有超过10 000行的变化。
更改更改=新更改(新建表(来源, “big_table”))。setStartPointNow();
当我改成:
请求request1 =新请求(源, “从BIG_TABLE选择*,其中some_column为空”);
SQL返回少于100行。
更改开始快速工作。桌上观看的变化时间在17-25秒之间。请求少于0.2s。
问题仍然存在,你能解释一下你的方法中主要的改变是什么? –