Es relativamente fácil. Utilizo Cake 1.3 de la instalación del compositor. Así es como mi composer.json parece:
{
"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"
}
}
}
]
}
A continuación, el archivo Bootstrap.php PHPUnit en el directorio de pruebas:
<?php
include('../vendors/composer/autoload.php');
include('../webroot/index.php');
Esta es phpunit.xml formar el mismo directorio:
<?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>
No olvide cargar sus clases de aplicación en la configuración de prueba. Puedes hacerlo cakephp manera. Por ejemplo, si el controlador se denomina calendario de su calendarTest.php puede verse como:
<?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;
}
}
Lo mismo para los modelos, las clases de proveedor y así sucesivamente. Funciona muy bien para mi
¡Gracias! No tengo pruebas en este momento por eso todavía puedo elegir entre los dos. Pasaré algún tiempo intentando ver si puedo hacer que CakePHP use PHPUnit core en su lugar. –
SimpleTest siempre es problemático, especialmente con los datos de prueba para los modelos. – hongster
Me gustaría modificar mi núcleo 1.3 para usar PHPUnit. ¿Alguna pista sobre cómo hacer que esto suceda? –