2017-08-29 186 views
1

我有以下的集成測試: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註釋?

回答

0

請嘗試:

@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

問題仍然存在,你能解釋一下你的方法中主要的改變是什麼? –

0

在我的情況的問題是大表。我正在觀看桌子上有超過10 000行的變化。

更改更改=新更改(新建表(來源, 「big_table」))。setStartPointNow();

當我改成:

請求request1 =新請求(源, 「從BIG_TABLE選擇*,其中some_column爲空」);

SQL返回少於100行。

更改開始快速工作。桌上觀看的變化時間在17-25秒之間。請求少於0.2s。