PHPUnit Dry Run或Discover Test而不执行

时间:2014-01-13 00:33:29

标签: php phpunit

我想在给定的文件夹中编写一个“发现”PHPUnit测试的脚本。

目前我可以执行:

phpunit . 

然后显示我的所有测试名称,但是执行它们可能需要相当长的时间。

我想要的是能够在没有实际执行测试的情况下查看项目中的测试。采用类似于

的格式
ExampleTest::testNameHere 

这可能吗?

感谢您的时间。

3 个答案:

答案 0 :(得分:0)

/* phpunit/php-file-iterator */
$iteratorFactory = new File_Iterator_Factory();

$paths = array(
    /* testsuite path */
    '/var/www/project/tests/unit/phpUnit/',
);

$suffixes = array(
    'Test.php',
);
$iterator = $iteratorFactory->getFileIterator($paths, $suffixes);

foreach ($iterator as $file) {
    $fileName = $file->getFileName();
    $path = $file->getPathName();

    // you should use autoloader
    require_once $path;

    // build className, according to your file structure
    $class = preg_replace('/\.php/', '', $fileName);

    $refrlection = new ReflectionClass($class);
    $methods = $refrlection->getMethods(ReflectionMethod::IS_PUBLIC);
    foreach ($methods as $method) {

        // test* is test method
        if (preg_match('/^test[A-Z]/', $method->getName())) {
            echo $refrlection->getName() . ':' . $method->getName();
            echo PHP_EOL;
        }
    }
}

答案 1 :(得分:0)

检测文件是否包含以下内容的代码:

  • 继承测试类的PHPUnit基类的类(抱歉,不要在我面前有名字)
  • 以' test'
  • 开头的该类中的方法

应该这样做。

答案 2 :(得分:0)

您正在寻找:

--list-tests