我希望将我的groovy源文件保存在他们自己的目录中,测试位于一个单独的目录中。
我的目录结构如下:
.
├── build
│ └── Messenger.class
├── build.xml
├── ivy.xml
├── lib
├── src
│ └── com
│ └── myapp
│ └── Messenger.groovy
└── test
└── unit
├── AnotherTest.groovy
└── MessengerTest.groovy
我可以使用groovy
命令成功运行一个测试,并使用-cp
指定被测单元的类路径以指向build/
但是如何运行所有测试在目录?
答案 0 :(得分:1)
Tou可以使用命令运行所有单元测试:
grails test-app unit:
如果您有单元,集成,功能......测试,您可以使用命令运行所有测试:
grails test-app
答案 1 :(得分:0)
我是groovy的新手,但我编写了自己的测试运行器并将其放在项目的根目录中。源代码:
import groovy.util.GroovyTestSuite
import junit.textui.TestRunner
import junit.framework.TestResult
import static groovy.io.FileType.FILES
public class MyTestRunner {
public static ArrayList getTestFilesPaths(String test_dir) {
// gets list of absolute test file paths
ArrayList testFilesPaths = new ArrayList();
new File(test_dir).eachFileRecurse(FILES) {
if(it.name.endsWith(".groovy")) {
testFilesPaths.add(it.absolutePath)
}
}
return testFilesPaths;
}
public static GroovyTestSuite getTestSuite(ArrayList testFilesPaths) {
// creates test suite using absolute test file paths
GroovyTestSuite suite = new GroovyTestSuite();
testFilesPaths.each {
suite.addTestSuite(suite.compile(it));
}
return suite;
}
public static void runTests(GroovyTestSuite suite) {
// runs test in test suite
TestResult result = TestRunner.run(suite);
// if tests fail return exit code non equal to 0 indicating that
// tests fail it helps if one of your build step is to test files
if (!result.wasSuccessful()) {
System.exit(1);
}
}
}
ArrayList testFilesPaths = MyTestRunner.getTestFilesPaths("tests");
GroovyTestSuite suite = MyTestRunner.getTestSuite(testFilesPaths);
MyTestRunner.runTests(suite)
如果您尝试使用此功能,请注意如果失败,则getTestFilesPaths
很可能无法正常工作。
我的目录结构
.
├── test_runner.groovy
├── src
│ └── ...
└── tests
└── Test1.groovy
└── someDir
├── Test2.groovy
└── Test3.groovy
如何运行
从运行test_runner.groovy
的同一目录:
groovy test_runner.groovy