由於測試污染(測試通過或失敗,取決於它們運行的順序),因此Im的集成測試失敗。Grails。來自單元測試的模擬數據在集成測試中可用
讓我感到有點困惑的是,似乎我用mockDomain(Media.class,[new Movie(...)])
嘲笑了一些數據的單元測試仍然存在,並且在其他測試中甚至集成測試中都可用。
這是預期的行爲?爲什麼測試框架不能在每次測試之後自行清理?
編輯
真是奇怪,文檔指出:
集成測試,從單元測試的區別在於,你可以完全訪問測試中的Grails的環境。 Grails將使用內存中的HSQLDB數據庫進行集成測試,並在每次測試之間清除數據庫中的所有數據。
然而,在我的集成測試我有以下代碼
protected void setUp() {
super.setUp()
assertEquals("TEST POLLUTION!",0,Movie.count())
...
}
這使我的輸出:
TEST POLLUTION! expected:<0> but was:<1>
含義有數據存在時應該不會有!
望着那是)目前詮釋他Movie.list(我發現數據對應於數據在以前的測試(單元測試)設置
protected void setUp() {
super.setUp()
//mock the superclass and subclasses as instances
mockDomain(Media.class,[
new Movie(id:1,name:'testMovie')
])
...
}
爲什麼IM遇到這些問題的任何想法的數據?
使用Grails創建一個簡單的測試應用程序,我可以在應用程序中重新創建問題。所以我將它報告爲一個bug @ http://jira.grails.org/browse/GRAILS-7514 – netbrain 2011-05-21 13:38:32
我在Grails 1.3.7上的示例應用程序中遇到了同樣的測試失敗Java 1.6.0_25 – 2011-05-21 14:30:06
GRAILS-7514的新鏈接:https://github.com/grails/grails-core/issues/5842 – 2016-05-02 13:03:22