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 
} 
+0

问题仍然存在,你能解释一下你的方法中主要的改变是什么? –

在我的情况的问题是大表。我正在观看桌子上有超过10 000行的变化。

更改更改=新更改(新建表(来源, “big_table”))。setStartPointNow();

当我改成:

请求request1 =新请求(源, “从BIG_TABLE选择*,其中some_column为空”);

SQL返回少于100行。

更改开始快速工作。桌上观看的变化时间在17-25秒之间。请求少于0.2s。