Si vos différentes classes d'utilisateurs héritent d'une classe d'utilisateurs parente , alors je vous recommande d'utiliser la même structure d'héritage pour vos classes de cas de test.
Tenir compte des classes d'exemples suivants:
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';
}
}
Vous pouvez faire ce qui suit avec vos cas tests des classes:
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);
}
}
Parce que chaque test dépend d'une méthode de création que vous pouvez remplacer, et parce que les méthodes de test sont héritées de la classe de test parent, tous les tests de la classe parent seront exécutés sur la classe enfant, sauf si vous les remplacez pour modifier le comportement attendu.
Cela a très bien fonctionné dans mon expérience limitée.