我将 Eclipse PDT 用于 PHP。我可以运行我的 PhpUnit 测试:工作正常。
但我无法调试我的单元测试。有人已经这样做了吗?有人可以帮忙吗?
谢谢,梅萨乌德
一个例子价值超过 1000 字:
require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
class MyTestCase extends PHPUnit_Framework_TestCase {
protected function setUp() {
parent::setUp ();
}
function testSimple() {
echo "horray !";
}
protected function tearDown() {
parent::tearDown();
}
static function main() {
$suite = new PHPUnit_Framework_TestSuite( __CLASS__);
PHPUnit_TextUI_TestRunner::run( $suite);
}
}
if (!defined('PHPUnit_MAIN_METHOD')) {
MyTestCase::main();
}
关键是:
在您的测试用例中提供一个主要方法
测试测试是直接执行(通过 php MyTestCase.php)还是由 phpunit 本身执行。如果直接执行 - 只需启动 testrunner。
知道你可以调试你的测试用例。
对于想知道是否有使用 phpunit 配置 Eclipse/Aptana 的简单说明的其他人,我找到了一个网站:
http://pkp.sfu.ca/wiki/index.php/Configure_Eclipse_for_PHPUnit
你要做的基本上是:
你不需要修改你的测试文件或任何东西,它们会开箱即用。
我终于在 Eclipse 3.4 中与命令行并行运行调试。调试我作为“PHP 网页”运行,我的最小代码
require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
class XTest extends PHPUnit_Framework_TestCase{
public function testX(){
//...
}
}
if (!defined('PHPUnit_MAIN_METHOD')) {
header('Content-type:text/plain; charset=utf-8');
PHPUnit_TextUI_TestRunner::run( new PHPUnit_Framework_TestSuite( 'XTest'));
}
我已按照此处的说明在单元测试中的 setUp() 方法中设置断点来确认:
它涉及将 /usr/bin/phpunit 文件复制到您的项目中(因此可以通过 eclipse 的 GUI 访问它),并向其中添加 .php 扩展名。从那里,转到您的调试配置并将 PHP-File 设置为该 phpunit.php 文件。
下一个重要步骤对我来说非常有用,因为我使用的是 Yii,它为我提供了 bootstrap.php 文件。把这样的东西放在你的参数中:
--bootstrap=${workspace_loc}/my-project/trunk/protected/tests/bootstrap.php ${workspace_loc}/my-project/trunk/protected/tests/unit/SomeClassToTest.php