Meilleures pratiques pour tester les méthodes protégées avec PHPUnit (sur les classes abstraites)

Avec PHPUnit et PHP >= 5.3 il est possible de tester les méthodes protected. La page suivante à stackoverflow décrit les meilleures pratiques sur:

"Les meilleures pratiques pour tester les méthodes protected avec PHPUnit"

protected static function callProtectedMethod($name, $classname, $params) {
  $class = new ReflectionClass($classname);
  $method = $class->getMethod($name);
  $method->setAccessible(true);
  $obj = new $classname($params);
  return $method->invokeArgs($obj, $params);
}

Pour tester les méthodes publiques sur les classes abstraites est facile avec PHPUnit.
Pour tester les méthodes protected sur les classes normales est facile avec l'approche ci-dessus.
Pour tester les méthodes protected sur les classes abstraites doit être possible en quelque sorte...

Je sais PHPUnit tire les classes abstraites et "met en œuvre" méthodes abstraites dans une classe concrète des incendies et les tests contre le béton de la classe mais je ne sais pas comment faire pour l'intégrer dans l'approche ci-dessus pour un callProtectedMethodOnAbstractClasses().

Comment allez-vous faire de tels tests?

PS: La question n'est PAS sur la vérité de tester les méthodes protected (voir: blanc-gris - et blackbox-test). La nécessité de tester les méthodes protected dépend de votre stratégie de test.

source d'informationauteur Daniela Waranie