Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Eclipse中调试一些PhpUnit测试_Eclipse_Debugging_Phpunit - Fatal编程技术网

在Eclipse中调试一些PhpUnit测试

在Eclipse中调试一些PhpUnit测试,eclipse,debugging,phpunit,Eclipse,Debugging,Phpunit,我将EclipsePDT用于PHP。 我可以运行PhpUnit测试:工作正常 但是我不能调试我的单元测试。 有人已经这么做了吗? 有人能帮忙吗 Thanx, Messaoud一个例子胜过1000个字: require_once 'PHPUnit/Framework.php'; require_once 'PHPUnit/TextUI/TestRunner.php'; class MyTestCase extends PHPUnit_Framework_TestCase { protecte

我将EclipsePDT用于PHP。 我可以运行PhpUnit测试:工作正常

但是我不能调试我的单元测试。 有人已经这么做了吗? 有人能帮忙吗

Thanx,
Messaoud

一个例子胜过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();
}
关键是:

  • 在测试用例中提供一个main方法

  • 测试是直接执行(通过php MyTestCase.php)还是由phpunit本身执行。如果直接执行-只需启动testrunner


  • 知道您可以调试您的测试用例。

    对于那些想知道是否有简单的说明来配置Eclipse/Aptana和phpunit的人,我发现了一个网站:

    基本上你要做的是:

  • 确保PEAR库位于项目的include路径中。在“导航器”窗口中右键单击项目,然后单击“属性”。您将看到PHP包含路径(或Aptana中针对我的版本的PHP构建路径)有一个部分,打开该部分并将PEAR库添加到包含/构建路径中,以便Eclipse了解phpunit
  • 创建一个运行phpunit.php文件的调试配置(如果该文件使用shebang运行,则可能需要将.php扩展名添加到该文件中,如Mac OS X中所示)。 因此,使用phpunit.php文件作为“启动操作”脚本,设置“php脚本参数”,以便您感兴趣的phpunit测试文件由phpunit.php运行。添加任何其他命令行参数以适合您。冗长是个不错的选择。例如,您还可以使用${resource\u loc}之类的变量让Eclipse将其替换为当前文件
  • 运行调试配置并享受调试
    您不需要修改您的测试文件或其他任何东西,它们将立即生效。

    我终于在Eclipse3.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'));
    }
    

    我们可以用Eclipse插件解决这个问题

    MakeGood提供了一种调试测试的简单方法。您只能在调试模式下运行测试。 有关详细信息,请参阅


    我已按照此处的说明在单元测试中的setUp()方法中设置断点,以进行确认:

    它涉及到将/usr/bin/phpunit文件复制到您的项目中(因此可以通过eclipse的GUI访问该文件),并向其中添加.php扩展名。从那里,转到调试配置并将PHP文件设置为phpunit.PHP文件

    下一个重要步骤对我来说非常有用,因为我使用的是Yii,它为我提供了一个bootstrap.php文件。在args中放入类似的内容:

    --bootstrap=${workspace_loc}/my-project/trunk/protected/tests/bootstrap.php ${workspace_loc}/my-project/trunk/protected/tests/unit/SomeClassToTest.php
    

    我喜欢这个插件。在测试了多个选项后,结果证明它是最适合用户界面、易于设置和稳定性的。该链接从2015年12月27日起中断