如何运行多个Groovy单元测试

时间:2014-12-18 06:21:32

标签: unit-testing testing groovy tdd

我希望将我的groovy源文件保存在他们自己的目录中,测试位于一个单独的目录中。

我的目录结构如下:

.
├── build
│   └── Messenger.class
├── build.xml
├── ivy.xml
├── lib
├── src
│   └── com
│       └── myapp
│           └── Messenger.groovy
└── test
    └── unit
        ├── AnotherTest.groovy
        └── MessengerTest.groovy

我可以使用groovy命令成功运行一个测试,并使用-cp指定被测单元的类路径以指向build/但是如何运行所有测试在目录?

2 个答案:

答案 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