Maison >développement back-end >tutoriel php >Tests unitaires PHP : conseils pour augmenter la couverture du code
Comment améliorer la couverture du code dans les tests unitaires PHP : utilisez l'option --coverage-html de PHPUnit pour générer un rapport de couverture. Utilisez la méthode setAccessible pour remplacer les méthodes et propriétés privées. Utilisez des assertions pour remplacer les conditions booléennes. Obtenez des informations supplémentaires sur la couverture du code grâce aux outils de révision du code.
Les tests unitaires sont une pratique cruciale pour garantir la qualité du code. La couverture du code est une mesure de la couverture des tests ; plus la couverture est élevée, plus la confiance est élevée. Cet article présentera des techniques pour améliorer la couverture du code des tests unitaires PHPUnit et fournira des cas pratiques.
PHPUnit fournit l'option --coverage-html
pour générer un rapport HTML montrant la couverture de chaque fichier et méthode. Cela permet d’identifier le code découvert et guide les améliorations ultérieures. --coverage-html
选项来生成 HTML 报告,显示每个文件和方法的覆盖率。这有助于识别未覆盖的代码并指导后续改进。
phpunit --coverage-html=coverage-report
私有方法和属性通常不易测试。您可以使用 setAccessible
方法使它们对测试可见:
$object->setAccessibleProperty('privateProperty', 'newValue'); $object->setAccessibleMethod('privateMethod', function() { ... });
断言用于验证预期结果。使用 assertTrue
, assertFalse
等断言可以覆盖布尔条件。例如:
$this->assertTrue($object->isValid());
代码审查工具,如 Scrutinizer CI,可以提供额外的代码覆盖率洞察。它会自动创建覆盖率报告,并提示未覆盖的代码。
考虑以下代码:
class Calculator { public function add($a, $b) { return $a + $b; } }
我们可以编写一个单元测试来覆盖 add
方法:
class CalculatorTest extends PHPUnit\Framework\TestCase { public function testAdd() { $calculator = new Calculator(); $this->assertEquals(5, $calculator->add(2, 3)); } }
通过使用代码覆盖率报告,我们看到 CalculatorTest
仅覆盖了 add
方法的一部分。我们可以通过断言 $a !== $b
$this->assertEquals(5, $calculator->add(2, 3)); $this->assertNotEquals(3, $calculator->add(2, 3));2. Remplacer les méthodes et propriétés privéesLes méthodes et propriétés privées sont généralement difficiles à tester. Vous pouvez les rendre visibles aux tests en utilisant la méthode
setAccessible
: 🎜rrreee🎜3 Remplacer les conditions à l'aide d'assertions 🎜🎜Les assertions sont utilisées pour vérifier les résultats attendus. Les conditions booléennes peuvent être remplacées à l'aide d'assertions telles que assertTrue
, assertFalse
. Par exemple : 🎜rrreee🎜4. Utilisez des outils de révision de code 🎜🎜Les outils de révision de code, tels que Scrutinizer CI, peuvent fournir des informations supplémentaires sur la couverture du code. Il crée automatiquement des rapports de couverture et demande du code découvert. 🎜🎜Cas pratique🎜🎜Considérez le code suivant : 🎜rrreee🎜Nous pouvons écrire un test unitaire pour couvrir la méthode add
: 🎜rrreee🎜En utilisant le rapport de couverture de code, nous voyons CalculatorTest ne couvre qu'une partie de la méthode <code>add
. Nous pouvons couvrir les conditions restantes en affirmant $a !== $b
: 🎜rrreee🎜Maintenant, la couverture du test sera de 100 %. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!