2013-05-21 66 views
1

我在我的應用(使用postgres)中使用了默認id生成策略,並且我的所有其他表中都有一個唯一的序列表,所以id必須是在我的表空間獨特。在Grails單元測試中使用的id生成策略是什麼

但是,我在單元測試中沒有相同的行爲,因爲我在不同的表中有相同的ID,我猜測Grails在測試中使用了不同的策略? (每個表中序列?)

感謝

+1

grails在測試時使用測試環境,請參閱DataSource.groovy。默認情況下,數據庫位於內存h2中,除非您將其更改爲其他內容。 Postgres中的序列在這裏不適用於h2。 – dmahapatro

+0

補充:如果Postgres將永遠是您的prod數據庫,我建議您使用另一個Postgres基礎來進行集成測試,這將使您能夠在生產之前識別可能的問題。 –

回答

0

默認的Grails回滾在單元/集成測試DB交易。這可能解釋奇怪的行爲。

您可以嘗試通過在Test類中明確指出單元測試爲非事務性的。

static transactional = false