PHPunit保险

PHPunit保险,phpunit,code-coverage,Phpunit,Code Coverage,你好,又是这样 我正试图让PHPunit在本地主机上运行,以下是我的一些规范 xDebugger:v2.2(已启用) php:5.4.3 PHPunit:使用3.7.31和4.0.17进行了尝试 运行测试工作正常,但是每当我使用覆盖率html时,输出总是覆盖0%。我用两种版本的PHPunit都试过了 无论何时尝试--coverage text命令,我都会得到相同的结果,测试运行正常(失败/成功),但覆盖率为0%。 1测试-1断言-0 为了简单起见,我创建了以下两个类: class my {

你好,又是这样

我正试图让PHPunit在本地主机上运行,以下是我的一些规范

xDebugger:v2.2(已启用)
php:5.4.3
PHPunit:使用3.7.31和4.0.17进行了尝试

运行测试工作正常,但是每当我使用覆盖率html时,输出总是覆盖0%。我用两种版本的PHPunit都试过了

无论何时尝试--coverage text命令,我都会得到相同的结果,测试运行正常(失败/成功),但覆盖率为0%。
1测试-1断言-0

为了简单起见,我创建了以下两个类:

class my
{
  function method()
   {
    $bool = true;
    echo $bool;
   }
}
和测试类:

require_once 'my.php';
class myTest extends PHPUnit_Framework_TestCase
{
function testequal()
    {
    $bool = true;
    echo $bool;
    $this->assertTrue($bool);
    }
}
两个不同的文件,文件名是my.php和myTest.php。

如果我能提供更多信息,请提前告诉我,谢谢。

您实际上不是在测试
my
的代码。不是吗?这就是为什么覆盖率为0%

将测试代码更改为:

require_once 'my.php';
class myTest extends PHPUnit_Framework_TestCase
{
    function testSomething()
    {
        $object = new my();
        $this->assertEquals('1', $object->method());
    }
}

当然,我觉得自己非常愚蠢!:)所以测试函数/实函数的名称不必匹配?没问题;)不,他们不必匹配。但他们当然可以。但是当测试变得越来越复杂时,您通常会编写多个测试方法来测试单个方法。至少,拥有匹配的名字将不再有效。为了避免误解,我们已经将其改为foo名称。检查“echo”输出也不是最好的运行方式。只需从my::method返回$bool,然后返回$this->assertEquals(true,$object->method());作为一种测试会更正常。事实上,PHPUnit可以选择在函数实际输出任何内容时抛出警告。感谢alister的澄清,echo在多次小提琴演奏后仍然存在,return自然比echo好得多,谢谢!