Farklı kullanıcı sınıflarınız bir üst kullanıcı sınıfından miras alınırsa Daha sonra, test vakası sınıflarınız için aynı kalıtım yapısını kullanmanızı öneririm. Eğer test durumu sınıflarıyla aşağıdaki yapabileceğini
class User
{
public function commonFunctionality()
{
return 'Something';
}
public function modifiedFunctionality()
{
return 'One Thing';
}
}
class SpecialUser extends User
{
public function specialFunctionality()
{
return 'Nothing';
}
public function modifiedFunctionality()
{
return 'Another Thing';
}
}
:
Aşağıdaki örnek sınıfları düşünün her test geçersiz kılmak bir oluşturmak yönteme bağlı olduğundan
class Test_User extends PHPUnit_Framework_TestCase
{
public function create()
{
return new User();
}
public function testCommonFunctionality()
{
$user = $this->create();
$this->assertEquals('Something', $user->commonFunctionality);
}
public function testModifiedFunctionality()
{
$user = $this->create();
$this->assertEquals('One Thing', $user->commonFunctionality);
}
}
class Test_SpecialUser extends Test_User
{
public function create() {
return new SpecialUser();
}
public function testSpecialFunctionality()
{
$user = $this->create();
$this->assertEquals('Nothing', $user->commonFunctionality);
}
public function testModifiedFunctionality()
{
$user = $this->create();
$this->assertEquals('Another Thing', $user->commonFunctionality);
}
}
, çünkü Test yöntemleri, ana sınama sınıfından miras alınır, beklenen davranışları değiştirmek için geçersiz kılmadığınız sürece, üst sınıfa yönelik tüm sınamalar, alt sınıfa karşı çalıştırılır.
Bu sınırlı deneyimimde harika çalıştı.