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

时间:2011-06-28 18:29:37

标签: php automation integration-testing

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

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

  • 我将如何实施它? 有没有好的教程 任何地方

3 个答案:

答案 0 :(得分:7)

很多年以后...现在有了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']);
}

答案 1 :(得分:4)

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

一个可能的库是Google代码存储库中的yaymock。它是一个php5模拟库。

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

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

答案 2 :(得分:1)

如果您想对与基础架构交互的特定类进行白盒测试,我已经为其创建了一个PHPUnit扩展。

https://github.com/hrodic/php-integration-testing

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