【问题标题】:PHPUnit is Working With Command Line, but not with EclipsePHPUnit 使用命令行,但不使用 Eclipse
【发布时间】:2018-07-03 05:10:12
【问题描述】:

每当我从 Eclipse 运行测试文件时,它都会工作并显示结果为:

.                                                                1/1 (100%)

Time: 371 ms, Memory: 8.00MB

OK (1 test, 1 assertion)

但是如果我从 Eclipse Oxygen 运行相同的测试,我会收到错误:

PHP Fatal error:  Declaration of PHPUnitLogger::addFailure(Test $test, AssertionFailedError $e, $time): void must be compatible with PHPUnit\Framework\TestListener::addFailure(PHPUnit\Framework\Test $test, PHPUnit\Framework\AssertionFailedError $e, float $time): void in /tmp/phpunit_printer/PHPUnitLogger.php(415) : eval()'d code on line 1

我下载了 phpunit-7.1.phar,并通过使其可执行并将其移动到 /usr/local/bin 来全局安装它,对于 Eclipse,我已在下载目录中下载,但未使其可执行,我将其添加到我的Eclipse 项目作为外部 Phar 但它不工作并给出上述错误。

有人可以帮我解决这个问题吗?

顺便说一下,我是 NetBeanse 用户,但 NetBeans 不支持 PHP7.1,这就是迁移到 Eclipse 的原因。

更新

这是我的测试文件:

<?php
namespace tests\Unit\;

use PHPUnit\Framework\TestCase;

class MyTest extends TestCase
{
    public function testSimple() {
        $this->assertEquals(1, 1);
    }
}

【问题讨论】:

  • 你确定 Eclipse 使用的 phpunit 版本与你在命令行中使用的相同吗?
  • 我只能确保我用于全局安装的相同 phpunit phar 并在我的 eclipse 项目中添加为外部 phar。所以,这一定是一样的。

标签: eclipse phpunit


【解决方案1】:

我在使用 PHPUnit 7.5.14 时遇到了完全相同的问题,但没有找到解决方案。

因为我想测试我的应用程序在 PHP 7.1 上运行,我决定尝试 PHPUnit 6,它立即运行。所以 PHPUnit 6.5.14 帮了我大忙。

Eclipse 似乎与 PHPUnit 7 不兼容。我的 Eclipse 版本是 2018-12 (4.10.0) 和 PDT 6.2。切换到 PHPUnit 6 后,其他问题(我设法找到了解决方法)也消失了。例如,生成的类代码覆盖 TestCase::__construct 而不调用父构造函数。 PHPUnit 7 似乎有问题,而 6 则不然。

我没有找到 Eclipse PDT 的兼容性图表来支持我的论文。

【讨论】:

    猜你喜欢
    • 2020-04-26
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多