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

如何在PHP中执行集成测试?,php,automation,integration-testing,Php,Automation,Integration Testing,我目前正在对我的代码执行单元测试(使用PHPUnit和Jenkins),但我读了很多关于集成测试的书 是否有任何工具可以在php中执行此操作(最好是自动执行) 我将如何着手实施它? 有好的教程吗 哪里 基本上,除了单元测试之外,还要实现模拟测试,模拟测试不仅仅是测试单个单元,更像是一组聚在一起的单元,您将它们视为一个逻辑单元,在处理某些输入或调用方法时,它们应该以某种方式运行 一个可能的库位于google代码库中。这是一个php5模拟库 进一步的集成测试或多或少只是测试整个系统行为的测试。最基

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

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

  • 我将如何着手实施它? 有好的教程吗 哪里


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

一个可能的库位于google代码库中。这是一个php5模拟库

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


要实现自动化,您可以使用一些连续集成框架。。。哈德逊、阿尔比特或phpUnderControl。对于使用hudson和一些不错的测试插件设置php,有一个非常好的方法。它还提到一些有用的插件,如代码覆盖率检查等。。。可以集成到环境中。

多年后。。。现在有了一个框架,您可以使用它进行单元、集成和功能测试

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

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

要进行说明,请从以下方面查看此集成测试示例:


如果您想要白盒测试与基础结构交互的特定类,我已经为它创建了一个PHPUnit扩展


这是最小和简单的。您只需要拥有PHPUnit。

与内置PHPUnit功能相比,使用yaymock有什么优势吗?模拟库是专门为测试对象方法调用链而设计的。单元测试不是。在项目页面中有一个wikipage,您可以在其中看到一些示例来演示这些测试(您将看到相对于普通单元测试的优势。但要明确的是,模拟测试不是单元测试的替代品。谢谢。这似乎是一种方式。模拟不是“取出”(通过“模拟”它们)吗从正在测试的代码中删除依赖库,从而不再实际测试集成?您是对的,“模拟”总是会带来一些问题。可能是库可能是模块可能是依赖后端系统,但如果不这样做,您只能进行积极的测试。另一个方面是覆盖率。通过“模拟”您还应该注意的是,您的系统覆盖率仍然很高。
<?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']);
}