我一直在运行我的Grails单元测试,输入grails test-app :unit
,它运行所有单元测试。有没有办法指定单个测试?
编辑:到目前为止,每个人基本上都在说同样的话,但是当我这样做时,就不会运行任何测试。还有什么想法吗?
结论:好的,我使用的是测试类的名称,而不是正在测试的类的名称。我尝试Foo
代替FooTests
后,效果非常好。
答案 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