2014-03-13 191 views
1

我正在尝试为我的grails应用程序编写一些单元测试。当我运行我得到的测试Grails单元测试

Compilation error compiling [unit] tests: startup failed: 
    C:\Users\adam\Dropbox\NetBeansProjects\Assignment\test\unit\Assignment\FixtureControllerTests. 
    groovy: 20: Only classes and closures can be used for attribute 'value' in 
    @grails.test.mixin.TestMixin 
     @ line 20, column 12. 
     @TestMixin(GrailsUnitTestMixin) 

我想不通为什么我得到这个错误。 我的代码是:

package Assignment 

    import grails.test.mixin.Mock 
    import grails.test.mixin.TestFor 
    import grails.test.mixin.TestMixin 

    @TestFor(FixtureController) 
    @Mock(Fixture) 
    @TestMixin(GrailsUnitTestMixin) 


    class FixtureControllerTests { 

     @Test 
     public void testAddingFixture() { 

      params.hometeamid = 1 
      params.awayteamid = 2 
      params.linkCount = 1 
      params.link0 = "http://www.google.com" 
      params.name0 = "Google" 
      params.place = "Rotherham" 
      params.date = new Date() 
      controller.createFixture() 

     } 
    } 
+0

这看起来很奇怪,你运行的是哪个版本的grails? – bschipp

+0

如果您在此测试中使用'@ TestFor',则不需要'@TestMixin(GrailsUnitTestMixin)'。 – dmahapatro

+0

我正在使用grails 2.3.5 –

回答

1

这是测试看起来应该像:

package assignment //considering lowercase for package name 

import grails.test.mixin.Mock 
import grails.test.mixin.TestFor 

@TestFor(FixtureController) 
@Mock(Fixture) //Assuming Fixture is a domain object you are working with 
class FixtureControllerTests { 

    void testAddingFixture() { 
     params.hometeamid = 1 
     params.awayteamid = 2 
     params.linkCount = 1 
     params.link0 = "http://www.google.com" 
     params.name0 = "Google" 
     params.place = "Rotherham" 
     params.date = new Date() 

     controller.createFixture() 

     //assert something 
    } 
} 

我相信你正在使用Grails 2.2 *或者更低,并在这些版本用于测试模板有TestMixin,后来在更新版本中被TestFor取代。最近的版本默认使用spock。

+0

工作完美!谢谢。 –