【问题标题】:PHPUnit coverage does not cover static methodPHPUnit 覆盖不覆盖静态方法
【发布时间】:2018-06-21 15:54:40
【问题描述】:

我编写的单元测试未能涵盖测试方法:

从图片上看(phpunit --coverage-html渲染),覆盖的行数是85-90%,那怎么可能在同一个类中没有覆盖任何函数或方法呢?

getPropertyValue中的覆盖代码:

测试:

class ClassHelperTest extends TestCase
{
    /**
     * @throws \Jad\Exceptions\JadException
     */
    public function testSetPropertyValue()
    {
        $class = new TestClass();
        ClassHelper::setPropertyValue($class, 'property1', 'test');
        $this->assertEquals('test', ClassHelper::getPropertyValue($class, 'property1'));
    }

    public function testHasPropertyValue()
    {
        $class = new TestClass();
        $this->assertFalse(ClassHelper::hasPropertyValue($class, 'testProperty'));
        $this->assertTrue(ClassHelper::hasPropertyValue($class, 'property1'));
        $this->assertTrue(ClassHelper::hasPropertyValue($class, 'property2'));
    }
}

class TestClass
{
    public $property1;

    public $property2;

    public function getProperty2()
    {
        return 'prop2';
    }
}

PHPUnit version 6.1.3

更新! 100% 覆盖率的工作示例,其中包括异常测试(感谢 Maxim):

/**
 * @throws \Jad\Exceptions\JadException
 * @expectedException \Jad\Exceptions\JadException
 * @expectedExceptionMessage Property [property3] not found in class [Jad\Tests\TestClass]
 */
public function testGetPropertyValue()
{
    $class = new TestClass();
    ClassHelper::setPropertyValue($class, 'property1', 'test');

    $this->assertEquals('test', ClassHelper::getPropertyValue($class, 'property1'));
    $this->assertEquals('prop2', ClassHelper::getPropertyValue($class, 'property2'));
    $this->expectException(ClassHelper::getPropertyValue($class, 'property3'));
}

【问题讨论】:

    标签: php phpunit code-coverage


    【解决方案1】:

    代码覆盖率表明您没有达到代码引发异常的地步,这似乎是正确的,因为您没有任何断言引发异常的测试用例。 getPropertyValue 仅由使用快乐路径的testSetPropertyValue 测试。

    【讨论】:

    • 原来是这样,谢谢,这让我快疯了! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多