用PHPUnit测试抽象类的方法
发布时间:2020-12-13 18:26:14 所属栏目:PHP教程 来源:网络整理
导读:我有一个抽象类,其中包含常用方法,我希望测试,所以我不必在扩展此类的每个类中继续测试它们. abstract class Class1 implements iClass1{ const VALUE = 'A'; private $Return; public function __construct($Field = NULL) { if( ! is_null($Field) ) $this
我有一个抽象类,其中包含常用方法,我希望测试,所以我不必在扩展此类的每个类中继续测试它们.
abstract class Class1 implements iClass1 { const VALUE = 'A'; private $Return; public function __construct($Field = NULL) { if( ! is_null($Field) ) $this->SetField($Field); } public function GetField() { return $this->Return; } public function SetField($Field) { if (strlen($Field) != 3) throw new CLASS1_EXCEPTION('Field "' . $Field . '" must be 3 digits.'); $this->Return = $FieldCode; } abstract function CalculateData(); } 我想创建基本的测试用例,然后测试构造函数,GetField和其他函数,然后我的其他测试文件可以测试抽象函数. 我希望能够测试const没有改变,字段抛出异常等… 测试: class TEST_CLASS1 extends PHPUnit_Framework_TestCase { protected function setUp() { require_once('CLASS1.php'); } public function testConstants() { $this->assertEquals(CLASS1,'A'); } /* @expectedException CLASS1_EXCEPTION public function testLargeFieldException() { $class1 = new CLASS1('ABCD'); $class1 = new CLASS1(); $class1->SetField('ABCD'); } } 我如何创建测试因为我无法创建CLASS1对象,因为它是一个抽象类?
一种选择是创建一个
TestableClass1 extends Class1 { public function CalculateData() {} } 并使用该类进行测试. 另一种选择是做几乎相同,但使用API?? phpunit为您提供: 为此,请参阅示例示例10.13:测试 一个更简单的例子: abstract class AbstractClass { public function concreteMethod() { return 5; } public abstract function abstractMethod(); } class AbstractClassTest extends PHPUnit_Framework_TestCase { public function testConcreteMethod() { $sut = $this->getMockForAbstractClass('AbstractClass'); $this->assertSame(5,$sut->concreteMethod()); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |