Kiểm thử đơn vị các lớp trừu tượng không cần thiết có nghĩa là kiểm tra giao diện, vì các lớp trừu tượng có thể có các phương thức cụ thể và phương thức cụ thể này có thể được kiểm tra.
Không có gì lạ khi viết một số mã thư viện để có một lớp cơ sở nhất định mà bạn mong đợi sẽ mở rộng trong lớp ứng dụng của mình. Và nếu bạn muốn chắc chắn rằng mã thư viện đã được kiểm tra, bạn cần phương tiện để UT các phương thức cụ thể của các lớp trừu tượng.
Cá nhân, tôi sử dụng PHPUnit và nó được gọi là các đối tượng sơ khai và giả để giúp bạn thử nghiệm loại điều này.
Trực tiếp từ hướng dẫn PHPUnit :
abstract class AbstractClass
{
public function concreteMethod()
{
return $this->abstractMethod();
}
public abstract function abstractMethod();
}
class AbstractClassTest extends PHPUnit_Framework_TestCase
{
public function testConcreteMethod()
{
$stub = $this->getMockForAbstractClass('AbstractClass');
$stub->expects($this->any())
->method('abstractMethod')
->will($this->returnValue(TRUE));
$this->assertTrue($stub->concreteMethod());
}
}
Đối tượng giả cung cấp cho bạn một số điều:
- bạn không cần phải thực hiện cụ thể lớp trừu tượng và thay vào đó có thể thoát khỏi sơ khai
- bạn có thể gọi các phương thức cụ thể và khẳng định rằng chúng thực hiện chính xác
- nếu phương thức cụ thể dựa vào phương thức (trừu tượng) chưa thực hiện, bạn có thể bỏ qua giá trị trả về bằng phương thức will () PHPUnit