如何在PHP中执行集成测试?

2022-08-30 14:58:08

我目前正在对我的代码执行单元测试(使用PHPUnit和Jenkins),但我已经阅读了很多关于集成测试的信息。

  • 是否有任何工具可以在php中执行此操作(最好是自动化的)?

  • 我该如何实现它?在任何地方都有好的教程吗?


答案 1

许多年后...现在有Codeception框架,你可以用它来做单元,集成和功能测试

Codeception使用PHPUnit作为运行其测试的后端。因此,任何 PHPUnit 测试都可以添加到 Codeception 测试套件中。

单元测试中,您将模拟数据库访问,文件系统,HTTP请求和其他组件,以隔离代码并使其更快。
集成测试不需要单独执行代码,这意味着您将实际使用这些组件并检查输出/结果的预期内容。

为了说明这一点,请看一下 Codeception DOC 中的这个集成测试示例:

<?php
function testSavingUser()
{
    $user = new User();
    $user->setName('Miles');
    $user->setSurname('Davis');
    $user->save();
    $this->assertEquals('Miles Davis', $user->getFullName());
    $this->tester->seeInDatabase('users', ['name' => 'Miles', 'surname' => 'Davis']);
}

答案 2

基本上,要走的路是实现除了单元测试之外,还要模拟测试,这些测试不仅仅是测试单个单元,更像是一组组合在一起的单元,你将它们视为一个逻辑单元,在交出一些输入或调用方法时,它应该以某种方式运行。

一个可能的库是谷歌代码存储库中的yymock。它是一个php5模拟库。

进一步的集成测试或多或少只是测试整个系统行为的测试。基本的事情是设置一个测试环境,然后部署你的应用程序。您也可以使用单元测试框架或模拟库进行此类测试。如你所愿。在您的案例中,详细的集成测试是 http 请求,基于数据库中的一些数据和预期的可能的“html”输出。

要实现自动化,您可以使用一些连续的集成框架...Hudson,Arbit或phpUnderControl。对于使用hudson和一些不错的测试插件设置php,有一个非常好的教程。它还提到了一些有用的插件,如代码覆盖率检查等...可以集成到环境中。


推荐