@TestFor和扩展ControllerUnitTestCase之间的区别

时间:2013-11-23 13:14:26

标签: grails

我使用的是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中的单元测试,区别是什么,哪一个比另一个更好?他们似乎都工作。

1 个答案:

答案 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