PHPUnit 覆盖不覆盖静态方法
PHPUnit coverage does not cover static method
我编写的单元测试未能涵盖测试方法:
如图(phpunit --coverage-html
渲染),覆盖了85-90%的行,怎么可能没有函数或方法被覆盖在同一个class中呢?
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'));
}
代码覆盖率显示您没有达到代码抛出异常的地步,这似乎是正确的,因为您没有任何断言抛出异常的测试用例。 getPropertyValue 仅由使用快乐路径的 testSetPropertyValue
进行测试。
我编写的单元测试未能涵盖测试方法:
如图(phpunit --coverage-html
渲染),覆盖了85-90%的行,怎么可能没有函数或方法被覆盖在同一个class中呢?
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'));
}
代码覆盖率显示您没有达到代码抛出异常的地步,这似乎是正确的,因为您没有任何断言抛出异常的测试用例。 getPropertyValue 仅由使用快乐路径的 testSetPropertyValue
进行测试。