我可以从命令行为Grails项目运行单个单元测试吗?

时间:2010-09-09 20:22:13

标签: unit-testing grails

我一直在运行我的Grails单元测试,输入grails test-app :unit,它运行所有单元测试。有没有办法指定单个测试?

编辑:到目前为止,每个人基本上都在说同样的话,但是当我这样做时,就不会运行任何测试。还有什么想法吗?

结论:好的,我使用的是测试类的名称,而不是正在测试的类的名称。我尝试Foo代替FooTests后,效果非常好。

5 个答案:

答案 0 :(得分:40)

您的设置可能出错的可能性

  • 您的命令顺序不正确。对我有用的是:

    grails test-app -unit Foo(我的测试类为FooTests.groovy

  • 您没有明确导入grails.test.GrailsUnitTestCase

    当我没有导入它时,我在识别我的测试时遇到了一些问题。当我延长GroovyTestCase时,事情似乎正常。

工作示例

这是一组适合我的测试示例。也许您可以发现它们与您的测试之间存在一些差异?

注意:这些都是在安装了testing插件的情况下运行的

<强>测试/单元/ FooTests.groovy

import grails.test.GrailsUnitTestCase
class FooTest extends GrailsUnitTestCase {
    void testFoo() {
        assert true
    }

    void testBar() {
        assert true
    }
}

<强>测试/单元/ BarTests.groovy

import grails.test.GrailsUnitTestCase
class BarTest extends GrailsUnitTestCase {
    void testFoo() {
        assert true
    }

    void testBar() {
        assert true
    }
}

<强>测试/单元/我/ PKG / BazTests.groovy

package my.pkg

import grails.test.GrailsUnitTestCase

class BazTest extends GrailsUnitTestCase {
    void testFoo() {
        assert true
    }

    void testBar() {
        assert true
    }
}

命令:所有单元测试

$ grails test-app -unit
...

Starting unit test phase ...

-------------------------------------------------------
Running 6 unit tests...
Running test my.pkg.BazTest...PASSED
Running test FooTest...PASSED
Running test BarTest...PASSED
Tests Completed in 847ms ...
-------------------------------------------------------
Tests passed: 6
Tests failed: 0
-------------------------------------------------------

...
Tests PASSED - view reports in target/test-reports

命令:Foo单元测试

$ grails test-app -unit Foo
...

Starting unit test phase ...

-------------------------------------------------------
Running 1 unit test...
Running test FooTest...PASSED
Tests Completed in 815ms ...
-------------------------------------------------------
Tests passed: 2
Tests failed: 0
-------------------------------------------------------

...
Tests PASSED - view reports in target/test-reports

命令:my.pkg.Baz单元测试

$ grails test-app -unit my.pkg.Baz
...

Starting unit test phase ...

-------------------------------------------------------
Running 2 unit tests...
Running test my.pkg.BazTest...PASSED
Tests Completed in 842ms ...
-------------------------------------------------------
Tests passed: 2
Tests failed: 0
-------------------------------------------------------

...
Tests PASSED - view reports in target/test-reports

我在Grails 1.2.3和Grails 1.3.4中尝试过这些,两者的行为都相同。

答案 1 :(得分:12)

是的,有

grails test-app -unit YourController.testSomething

其中YourController是您的控制器,testSomething是测试方法。

您应该看到类似

的内容

测试通过 - 在

中查看报告

答案 2 :(得分:8)

鉴于测试类 foo.BarTests ,您可以使用以下命令仅运行该类中的测试:

grails test-app :unit foo.Bar

或者使用以下方法在该类中运行单个测试方法:

grails test-app :unit foo.Bar.testMethod

请注意,在指定测试类的名称时,不要包含“测试”一词。

答案 3 :(得分:3)

grails test-app -unit com.package.YourController.testSomething

运行测试时需要包含软件包名称

答案 4 :(得分:3)

这肯定会有效,我每天都会使用

以下将运行单个测试

grails test-app :unit ExampleControllerTests.testName

以下将运行所有ExampleControllerTests

grails test-app :unit ExampleControllerTests