【发布时间】:2015-01-05 14:16:23
【问题描述】:
我们在开发中使用 Jenkins 和 PHPUnit。很长一段时间以来,我都想开始在我们的团队中使用可执行需求。架构师/团队负责人/定义需求的人可以在实际代码之前编写测试。实际代码应该由另一个团队成员编写。因此,可执行需求测试在实际代码生成之前提交到存储库,Jenkins 重建项目并理所当然地失败了。并且项目一直处于失败状态,直到编写违反 XP 规则的新代码才能始终保持项目处于良好状态。
有没有什么方法可以告诉 PHPUnit 此类测试不应该在 Jenkins 下运行,而它们可以由任何开发人员轻松地在本地执行?调整 phpunit.xml 并不是很理想:对测试的本地更改更好,因为它们更容易跟踪。
我们尝试了 markTestIncomplete() 和 markTestSkipped(),但它们并没有真正满足我们的需要:可执行需求测试确实是完整的,不应该被跳过。使用这些函数会妨碍在开发中轻松执行此类测试。
在我们的例子中,最好的方法是使用 PHPUnit 选项,如 --do-not-run-requirements,由 Jenkins 执行的 PHPUnit 应该使用该选项。在开发机器上,不应使用此选项,并且实际的可执行需求测试应在开头有 @executableRequirements 元注释(仅在创建和测试实际代码后删除)。 PHPUnit 没有这样的功能的问题。
在 Jenkins 中是否有更好的方法来实现可执行需求的实现而不会出现“错误”失败?
【问题讨论】: