我可以让Intellij Idea 11 IDE了解Grails 2.0.x单元测试中的assertEquals和其他JUnit方法吗?

时间:2012-03-14 23:16:00

标签: unit-testing grails ide intellij-idea

我觉得奇怪的是,凭借如此出色的Grails集成,Idea无法识别Grails单元测试中的标准JUnit断言方法。我创建了一个全新的项目,并使用相应的测试创建了一个域类,以确保它不是我的大项目的奇怪之处。即使我添加@Test注释,IDE也看不到任何断言方法

@TestFor(SomeDomain)
class SomeDomainTests {

    @Test //thought adding this, not needed for Grails tests, would help but it doesn't
    void testSomething() {
       assertEquals("something", 1, 1);  //test runs fine, but IDE thinks this method and any similar ones don't exist
    }
}

3 个答案:

答案 0 :(得分:5)

我在IntelliJ bugtracker中创建了一个问题:http://youtrack.jetbrains.com/issue/IDEA-82790。它将在IDEA 11.1.0

中修复

作为解决方法,您可以向导入添加“import static org.junit.Assert。*”。

注意:在groovy代码中使用“assert 1 == 1:'message'”优于“assertEquals('message',1,1)”。

答案 1 :(得分:0)

如果使用'def'来定义变量(因此它的类型未知),然后您尝试将其传递给强类型的Java方法,那么Idea会出现问题。因为它无法推断出类型。

所以它会给出一条消息,说明“没有方法assertEquals()接受类型为String的参数,null,null”。

我不希望你给出的例子中的这条消息(因为你直接使用int,而不是动态类型的变量)但我认为你在尝试为问题创建一个简单的示例代码片段时可能会错过它

答案 2 :(得分:0)

使用@TestFor注释,AST会向您的测试类添加方法,而IDEA不会捕获这些方法。

您有两种选择:

  1. 使测试类扩展为GrailsUnitTestCase
  2. 为您的测试类添加动态方法。 Add dynamic method to class