5

我有一组 PHP 项目,其中一些依赖于其他项目。都有 PHPUnit 测试。所有这些都可以通过 Composer 安装,并使用 composer.json 文件指定它们的依赖项。每个项目的根目录中都有一个 phpunit.xml.dist 文件,该文件指向一个 bootsrap 文件。

现在我有这个项目 Foo ,它有许多直接依赖关系和几个间接依赖关系。对于 Foo 的 CI,我想运行它的所有测试,以及它的所有依赖项。

这是否可以通过 Composer 完成?如果没有,是否有一些标准的干净方式来做到这一点?

4

3 回答 3

5

您可以尝试作曲家脚本

{
    "scripts": {
        "test": "phpunit"
    }
}

或者也许创建一个makefile,然后使用composer调用它

{
    "scripts": {
        "build-all": "make build-all"
    }
}
于 2014-12-11T06:34:29.813 回答
4

我想您可以编写一个包含所有内容的 TestSuite,或者编写一个递归深入所有目录以查找测试的脚本。

但是,通常,您不会运行库和依赖项的测试,除非您第一次安装它们。您不会(阅读:不应该)真正更改应用程序中的库或依赖项代码(这有例外),所以一旦您安装了依赖项并运行它的测试,假设它们通过了,它们应该总是通过,因为你没有改变任何东西。

如果您要更改依赖项代码,则应该单独执行此操作,尤其是在您拥有依赖项的情况下。我假设您出于以下两个原因之一这样做:修复错误或添加功能。打开您的依赖项的项目/文件,为更改编写一个或多个测试,进行更改,确保测试通过,将更改提交到您的依赖项。然后让您的应用程序下拉更新的依赖项。

它的 tl;dr 是您不应该担心运行库或依赖项测试,因为这些应该是您在应用程序中不接触的黑匣子。

于 2013-10-05T19:02:27.607 回答
2

Composer 不会帮助您进行任何测试。

我怀疑它可以自动完成。您事先不知道任何所需库的测试位于何处。甚至可能测试未包含在已发布的库版本中,因为它们没有直接用途。

如果您知道所有库的测试都位于某个地方,那么您必须自己编写代码以将所有这些测试收集到一个大型元测试套件中。但我想知道这些是否真的有用。

我正在将 CI 与 Jenkins 和一些内部库一起使用,并且我设置 Jenkins 以在我更改所需库中的某些内容时启动依赖库的测试。依赖关系图视图插件正在帮助管理它。

于 2013-10-06T23:40:10.487 回答