7

从 PHPUnit 测试用例打印日志语句的最佳实践是什么?

我正在运行 selenium 测试用例,并希望打印出类似“登录完成”、“页面 XY 已打开”之类的内容。

我想在我想要的任何日志文件中查看那些。如果您可以定义日志级别,那就太好了。

4

2 回答 2

10

我建议您使用Selenium Server Logging。它将为您提供您可能需要的所有调试信息。

如果这不是您的选项并且您仍想从PHPUnit测试用例中记录,您有 3 个选项:

  1. 使用内置的日志记录功能(文档),可以通过phpunit.xml文件或命令行参数(文档)进行配置;
  2. 通过实现接口创建您自己的记录器PHPUnit_Framework_TestListener,这有点受限,因为它仅支持有限数量的事件您可以记录,例如startTest, endTest, addError,等。有关受支持事件的完整列表,addFailure请参阅(文档)。您可能会向您的实现添加更多事件,但这也需要您通过子类化类(文档)或实现接口(文档PHPUnit_Framework_TestSuite::run())来覆盖该方法。PHPUnit_Extensions_TestDecoratorPHPUnit_Framework_Test
  3. 最简单和更灵活的选择是子类化PHPUnit_Framework_TestCase该类并在那里实现日志记录功能。这将允许您从您的测试方法中登录。(文档
于 2012-11-21T12:34:50.270 回答
4

您可以实现一个测试侦听器,在phpunit.xml.dist.

如果您想在测试方法中指定消息,您可以让您的测试从一个添加日志方法的公共类继承。在那里做任何你想做的事。我不喜欢将其作为解决方案,但这当然是一种选择。

于 2012-11-21T10:57:21.730 回答