如何使用phpunit.xml运行带有CakePHP测试的PHPUnit?

时间:2015-02-03 09:09:47

标签: cakephp phpunit

我想用phpunit命令运行AllModelTest 但是当我试图跑步时,没有什么可以测试的结果 当然,有很多测试代码。

$vendors/bin/phpunit --configuration app/Test/phpunit.xml
PHPUnit 3.7.38 by Sebastian Bergmann.

Configuration read from /Develop/web/app/Test/phpunit.xml




Time: 30 ms, Memory: 3.75Mb


No tests executed!

当我使用"控制台/蛋糕"命令,看起来很好。

$ app/Console/cake test app AllModel --stderr

Welcome to CakePHP v2.5.8 Console
---------------------------------------------------------------
App : app
Path: /Develop/web/app/
---------------------------------------------------------------
CakePHP Test Shell
---------------------------------------------------------------
PHPUnit 3.7.38 by Sebastian Bergmann.

...
/app/Test/Case/Model/JanTest.php

我写了这样的phpunit.xml。

<?xml version="1.0" encoding="utf-8" ?>
<phpunit bootstrap="phpunit-bootstrap.php"
    colors="true"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    stopOnFailure="false">

    <testsuites>
        <testsuite name="Project Test Suite">
            <directory suffix="Test.php">Test/Case/</directory>
        </testsuite>
    </testsuites>

</phpunit>

phpunit-bootstrap.php是这样的。

<?php

$file = __DIR__.'/../../vendors/autoload.php';
if (!file_exists($file)) {
    throw new RuntimeException('Install dependencies to run test suite.');
}
$autoload = require_once $file;

目标测试文件&#34; AllModelTest.php&#34;是这样的。

<?php

class AllModelTest extends CakeTestSuite {
    public static function suite() {
        $suite = new CakeTestSuite('All model tests');
        $suite->addTestDirectory(TESTS . 'Case/Model');
        return $suite;
    }
}

如何从phpunit命令运行测试?

谢谢!

4 个答案:

答案 0 :(得分:1)

对于CakePHP 2.x,请按照文档进行操作 - 有一个内置的shell为你做测试,因为CakePHP 2.x与PHPUnit4.0不兼容,你需要通过这个shell坚持3.7而不是试图手动调用测试。

命令 as documented

cake test [...]

从您的应用目录开始,测试应用测试:

Console/cake test app

然后会显示可用测试列表。

答案 1 :(得分:0)

<directory suffix="Test.php">Test/Case/</directory>指定的路径相对于phpunit.xml文件的位置。

另请注意:

  • PHPUnit 3.7不再由PHPUnit项目维护。
  • PHPUnit项目多年来不鼓励通过继承PHPUnit_Framework_TestSuiteCakeTestSuite似乎用于CakeTestSuite)来组织测试套件
  • 如果同时使用<testsuites>来组织测试以及PHPUnit的XML配置文件的<testsuite> / {{1}}元素,则可能会遇到问题

答案 2 :(得分:0)

我遇到过这个问题,有时phpunit.xml提供的灵活性很有用,也是一个有效的用例。在我的案例和原始问题中,我们需要添加一些简单的引导代码。

经过大量的修补,我发现如果PHPUnit是通过cake的设计从phar文件运行的,它还会自动从你运行测试的目录中查找phpunit.xml文件。

对于命令行,这是app文件夹。因此该文件应位于app/phpunit.xml

对于Web测试运行器,这是app/webroot文件夹。因此该文件应位于app/webroot/phpunit.xml

答案 3 :(得分:0)

这适用于Cake 2,假设您的应用程序的Config目录中有 Console/cake test app AllModel --configuration=Config/phpunit.xml 个文件:

{{1}}