Я полностью убедился в TDD и пытался использовать его в своей книге, надеясь получить почти 100% охват тестов и всегда писать тесты перед новым кодированием.
Я использую phpUnit поверхZF, и хотя иногда я чувствую некоторый прогресс, в других я чувствую, что я полностью застрял.
Мое приложение ориентировано на базу данных, и мне нужно начать тестировать (и кодировать) базу данныхпостоянство.
Я смотрел на слайды из Презентации тестирования ламповых приложений Стивена Бергмана , и мне кажется очень ясным и понятным, как проверить взаимодействие с базой данных.
Но,Я всегда пытаюсь использовать класс, который расширяет PHPUnit_Extensions_Database_TestCase. У меня появляются сообщения об ошибках, связанные с тем, что я не нахожу некоторый класс в пространстве имен 'PHPUnit_Extensions_Database'.
Возможно, я упускаю какой-то важный момент, поскольку у меня возникает та же проблема, когда я пытаюсьследуйте любым другим решениям и предложениям, которые я могу найти, как ответ и презентацияна это я не могу связать здесь из-за моей репутации ...
Во всех случаях, когда я расширяю Database_TestCase, какой-то класс не найден.
Я подозреваю, что есть что-то, связанное скак я самозагрузился, но не могу понять, что я делаю не так.Тесты, написанные мной для расширения ControllerTestCase, работают хорошо.
Я работаю над Xampp.phpUnit версии os 3.6.10, php 5.3.8, Zend Framework 1.11.11
Я использую следующий phpunit.xml в качестве конфигурации php:
<phpunit bootstrap="./application/bootstrap.php" colors="true">
<testsuite name="Some">
<directory>./</directory>
</testsuite>
<filter>
<whitelist>
<directory suffix=".php">../application/</directory>
<directory suffix=".php">../library/MyApp/</directory>
<exclude>
<directory suffix=".phtml">../application/</directory>
<file>../application/Bootstrap.php</file>
<file>../application/modules/default/controllers/ErrorController.php</file>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./log/report" charset="UTF-8" yui="true" hightlight="true" lowupperbound="50" highlowerbound="80">
<log type="testdox" target="./log/testdox.html">
</log></log></logging>
Мой Bootstrap.php:
error_reporting(E_ALL | E_STRICT);
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once 'Zend/Application.php';
require_once 'ControllerTestCase.php';
и ControllerTestCase.php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';
class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
/**
* @var Zend_Application
*/
protected $application;
public function setUp() {
$this->bootstrap = array($this, 'appBootstrap');
parent::setUp();
}
public function appBootstrap() {
$this->application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
$this->application->bootstrap();
}
}
И когда я создаю тест как, например, этот tryTest.php
require_once 'PHPUnit/Extensions/Database/TestCase.php';
class TryTest extends PHPUnit_Extensions_Database_TestCase {
/*** any test or even just getConnection ***/
}
Я получаю следующее сообщение об ошибке или что-то похожее на него другими способами:
Неустранимая ошибка: класс 'PHPUnit_Extensions_Database_DefaultTester' не найден в C: \ xampp \ php\ PEAR \ PHPUnit \ Extensions \ Database \ TestCase.php в строке 132
Стек вызовов: 0,0003 326968 1. {main} () C: \ xampp \ php \ phpunit: 0 0,0141 745152 2.PHPUnit_TextUI_Command :: main () C: \ xampp \ php \ phpunit: 46 0.0141 745568 3. PHPUnit_TextUI_Command-> run () C: \ xampp \ php \ PEAR \ PHPUnit \ TextUI \ Command.php: 130 0.4012TUnTeNeTeTeNTeNT_TeE_T_TU_RT_50_64_RU_TU_T_WRT> doRun () C: \ xampp \ php \ PEAR \ PHPUnit \ TextUI \ Command.php: 192 0,7182 5750296 5. PHPUnit_Framework_TestSuite-> run () C: \ xampp \ php \ PEAR \ PHPUnit \ TextUI \ TestRunner.php: 325 2.4058 11441872 6. PHPUnit_Framework_TestSuite-> run () C: \ xampp \ php \ PEAR \ PHPUnit \ Framework \ TestSuite.php: 705 2.4060 11442104_Fite_Tur_it_TU_TUUTUTTrunTest () C: \ xampp \ php \ PEAR \ PHPUnit \ Framework \ TestSuite.php: 745 2.4060 11442104 8. PHPUnit_Framework_TestCase-> run () C: \ xampp \ php \ PEAR \ PHPUnit \ Framework \ TestSuite.php: 772 2.406111442104 9. PHPUnit_Framework_TestResult-> run () C: \ xampp \ php \ PEAR \ PHPUnit \ Framework \ TestCase.php: 751 2.4066 11441136 10. PHPUnit_Framework_TestCase-> runBare () C: \ xampp \ php \ PEAR \ PHPTestResult.php: 649 2.4079 11494800 11. PHPUnit_Extensions_Database_TestCase-> setUp () C: \ xampp \ php \ PEAR \ PHPUnit \ Framework \ TestCase.php: 801 2.4080 11494832 12. PHPUnit_Extensions_Database_Test \ \ \ C:PEAR \ PHPUnit \ Extensions \ Database \ TestCase.php: 202 2.4080 11494832 13. PHPUnit_Extensions_Database_TestCase-> newDatabaseTester () C: \ xampp \ php \ PEAR \ PHPUnit \ Extensions \ Database \ TestCase.php: 92
На C: \ xampp \ php \ PEAR \ PHPUnit \ Extensions \ Database есть файл DefaultTester.php, и я не могу понять, что происходит ...
Я попал в эту конфигурацию после следования [Zendcast от Jon Lebensold] [2].В тот момент у меня были трудные времена, пытаясь решить некоторые проблемы, но после некоторой помощи @edorian я обнаружил, что основная проблема была между моим стулом и клавиатурой ...: - / Вероятно, сейчас та же ситуация ...
Я даже пытался создать MapperTestCase аналогично тому, как Джон создавал свой файл ControllerTestCase.php, но это все равно мне не помогло.
Итак, теперь я здесь, пытаясь получить некоторыепомогите узнать, что не так с моей средой или подходом.