我一直在寻找帮助我将PHPUnit与CakePHP集成的教程。希望使用Selenium测试,所以更喜欢PHPUnit。
我一直在尝试按照http://cakebaker.42dh.com/2006/03/22/selenium/上的教程,但似乎无法使其发挥作用。有什么好的教程吗?
谢谢!
答案 0 :(得分:5)
相对容易。我从作曲家安装中使用cake 1.3。这就是我的composer.json的样子:
{
"config": {
"vendor-dir": "vendors/composer"
},
"require": {
"phpunit/phpunit": "3.7.*",
"cakephp/cakephp-1.3": "1.3",
},
"repositories": [
{
"type": "package",
"package": {
"name": "cakephp/cakephp-1.3",
"version": "1.3",
"source": {
"url": "https://github.com/cakephp/cakephp.git",
"type": "git",
"reference": "1.3"
}
}
}
]
}
然后测试目录中的phpunit bootstrap.php文件:
<?php
include('../vendors/composer/autoload.php');
include('../webroot/index.php');
这是phpunit.xml形式相同的目录:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
bootstrap="bootstrap.php"
backupStaticAttributes="false"
cacheTokens="false"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
forceCoversAnnotation="false"
mapTestClassNameToCoveredClassName="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader"
strict="false"
verbose="false"
>
<testsuites>
<testsuite name="AllTests">
<directory>.</directory>
</testsuite>
</testsuites>
<filter>
<blacklist>
<directory suffix=".php"></directory>
<file></file>
<exclude>
<directory suffix=".php"></directory>
<file></file>
</exclude>
</blacklist>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php"></directory>
<file></file>
<exclude>
<directory suffix=".php"></directory>
<file></file>
</exclude>
</whitelist>
</filter>
</phpunit>
不要忘记在测试设置中加载您的应用程序类。你可以用cakephp的方式做到这一点。例如,如果您的控制器名为calendar,则calendarTest.php可能如下所示:
<?php
/**
* Class ComponentsCommonTest
* @property calendarController $calendarController
*/
class CalendarTest extends PHPUnit_Framework_TestCase
{
/**
* @var calendarController $calendarController
*/
private $calendarController;
function setUp()
{
App::import('Core', array('View', 'Controller', 'Model', 'Router'));
App::import('Controller', 'Calendar');
$this->calendarController =& new CalendarController();
$this->calendarController->constructClasses();
$this->calendarController->layout = null;
}
}
模型,供应商类等相同。对我很有用。
答案 1 :(得分:3)
不幸的是,CakePHP不能与PHPUnit一起使用。 CakePHP已经切换到使用SimpleTest,你将有两个选择之一,重构你的测试以使用SimpleTest或修改核心以使用PHPUnit。
然而,应该说Mark Story has stated that CakePHP 2.0 will use PHPUnit为它的测试框架,所以如果你能等到那时候可能会成为最好的选择。