2012-11-12 81 views
0

Grails(2.1.1。,JUnit 4.1,IntelliJ)控制器测试。为什么在顶部代码片段中对于testHandleLogin来说uc不可见?Grails控制器测试 - 未识别成员变量

这一个失败的testHandleLogin断言,因为UC是空

@TestFor(UserController) 
class UserControllerTests { 

    UserController uc 
    //def UserController uc > same result, fails 

    void setUp() { 

     uc = new UserController() 
    } 

    void testHandleLogin() { 

     assert uc 
    } 

这工作,即主张提出质疑后成功

@TestFor(UserController) 
class UserControllerTests { 

    void setUp() {} 

    void testHandleLogin() { 

     def uc = new UserController() 
     assert uc 
    } 
+0

注意:你应该总是调用super.setUp()。 – Nihathrael

回答

0

当然,五分钟后,我找到了解决办法:

将“@Before”添加到setUp()方法中。

+0

在这种情况下,您还需要将@Test添加到测试用例'@Test void handleLogin()'中。然后你就不会混合使用junit版本3风格和junit 4.你也可以从每个使用@Test注释的案例开始删除单词测试,因为它不再使用反射来识别测试用例。 – j4y