Grails 3.3.2中如何通过CLI运行单个集成测试/测试类
解决Grails 3.3.2运行单个测试/测试类的问题
我来帮你搞定这个困扰!Grails 3.x(包括你使用的3.3.2版本)底层基于Gradle,所以运行单个测试的命令和旧版Grails 2完全不同——你之前尝试的都是Grails 2的参数,这就是为什么不管用啦。
正确的命令用法
1. 运行单个集成测试类
如果你要运行指定包下的ClassSpec集成测试类,用以下命令:
grails test-app integration-test --tests "your.package.path.ClassSpec"
或者直接使用Gradle原生命令(效果完全一致,Grails的test-app本质是调用Gradle任务):
# Linux/Mac ./gradlew integrationTest --tests "your.package.path.ClassSpec" # Windows gradlew.bat integrationTest --tests "your.package.path.ClassSpec"
2. 运行单个测试方法
如果只想执行测试类里的某个特定方法,比如testUserLogin,只需要在类名后加上方法名:
grails test-app integration-test --tests "your.package.path.ClassSpec.testUserLogin"
为什么你之前的命令无效?
-Dtest.single=package.ClassSpec:这是Grails 2专属的参数,Grails 3已经完全弃用了这个配置,所以不会生效。test-app *ClassSpec* -integration:这种通配符写法在Grails 3里会匹配到所有名称包含ClassSpec的测试类甚至相关任务,这就是为什么你看到执行了10个任务,而不是目标单个测试类。
额外注意事项
- 包名和类名必须完全匹配(包括大小写),否则会找不到测试类。
- 确保在项目根目录下执行命令,否则Gradle/Grails无法识别项目结构。
内容的提问来源于stack exchange,提问作者Mateusz Cieslak
相关产品推荐
相关产品推荐

