我使用的是grails 2.2.4并且相对较新。我试图对我的控制器进行单元测试,并且在我在书本和网络上看到的内容之间感到困惑。有时候我会看到人们写这样的控制器单元测试:
@TestFor(MyController)
@Mock([Domain1, Domain2])
class MyControllerUnitTests {
void testOne() ...
}
有时候我会看到:
class MyControllerUnitTests extends ControllerUnitTestCase {
public void setUp() ...
public void tearDown() ...
}
对于2.2.4中的单元测试,区别是什么,哪一个比另一个更好?他们似乎都工作。
答案 0 :(得分:2)
在Grails 2中引入了mixins用于测试,而您提到的另一种方法已用于旧版本的Grails。请查看官方Grails文档中的这个说明:
Grails 1.3.x及更低版本使用grails.test.GrailsUnitTestCase类层次结构进行JUnit 3样式的测试。 Grails 2.0.x及以上版本弃用了这些测试工具,支持mixins,可以应用于各种不同类型的测试(JUnit 3,Junit 4,Spock等),无需子类化
http://grails.org/doc/latest/guide/single.html#testing
所以你应该在Grails 2.2.4中使用mixins进行单元测试。有关Grails中可用的mixins和单元测试的更多信息,请访问:http://grails.org/doc/latest/guide/single.html#unitTesting