AssertJ-DB在Spring Boot集成测试中冻结

时间:2017-08-29 16:45:14

标签: spring junit spring-transactions assertj

我有以下集成测试:

@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#setStartPointNowt.getRowsList();上的测试已冻结,但我不知道如何解决。

当我删除@Transactional注释时,一切正常,没有任何冻结,但测试无法正常工作。

有没有办法解决这个问题,保留@Transactional注释?

2 个答案:

答案 0 :(得分:0)

请尝试:

ipList.append((address,)) 

答案 1 :(得分:0)

就我而言,这个问题很重要。我正在观看超过10 000行的桌面变化。

  

更改更改=新更改(新表(来源,   " BIG_TABLE"))setStartPointNow();

当我将其更改为:

  

请求request1 =新请求(来源,                   "从big_table中选择*,其中some_column为空");

SQL返回少于100行。

变更开始快速运作。当在桌子上观看变化的时间在17-25秒之间。请求小于0.2秒。