由于测试污染(测试通过或失败,取决于它们运行的顺序),因此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