Arcanist 单元测试需要几分钟时间

Arcanist unit tests take several minutes

我们有一个遗留代码库,我们刚刚开始添加单元测试覆盖率。这意味着虽然我们有一个庞大的代码库(150 万行,至少 600 类,加上支持,模板文件),但我们在整个应用程序中只有一两个单元测试。 (悲伤但真实)。

我的问题是 arcanist 单元测试(使用 arc unitarc diff 的一部分)需要四分钟多才能 运行。另一方面,PHPUnit 只需要几秒钟。

单元测试应该很短,特别是如果它只针对最近的差异。我如何加快这些速度,或者,除此之外,看看 arcanist 正在尝试做什么(这样我就可以优化自己)?

我最好的猜测是,这与 arcanist 需要查找测试文件这一事实有关,而 PHPUnit 不需要,但在那种情况下,我不知道如何让 arcanist 默认到正确的目录.

原来这其实不是测试造成的,而是覆盖造成的。默认情况下,Arcanist 尝试提供代码覆盖率报告:

   PASS   14ms★  Test\Unicorn\Feeds\Somber\DubStep::testLoadBadType
   PASS    5ms★  Test\Unicorn\Feeds\Somber\DubStep::testLoadBadJSON
   PASS    8ms★  Test\Unicorn\Feeds\Somber\DubStep::testLoadBadSeasonWeek
   PASS  148ms   Test\Unicorn\Feeds\Somber\DubStep::testEmptyData
   PASS  200ms   Test\Unicorn\Feeds\Somber\DubStep::testCompleteLoad
   PASS    5ms★  Test\Fantasy\Feeds\Somber\DubStep::testGetProjectionStats
   PASS    5ms★  Test\Fantasy\Feeds\Somber\DubStep::testGetNumGamesPlayed
   PASS   12ms★  Test\Unicorn\Feeds\Somber\DubStep::testIsStatBonus
   PASS  140ms   Test\Fantasy\Feeds\Somber\DubStep::testIsPlayerUpdatedBaseConditions
   PASS    7ms★  Test\Fantasy\Feeds\Somber\DubStep::testCalcNormalizedWeekProjection

COVERAGE REPORT
      0%     tests/feeds/lib/Feeds/Somber/Extension/usfoak-qub-te-hk3.json
      0%     tests/feeds/lib/Feeds/Somber/DubStep.php
     93%     feeds/lib/Feeds/Somber/PlayerProjectedStats.php

覆盖率 运行 是针对整个存储库的完整覆盖率报告,它不会缓存结果。这意味着每个 arc diff 中的每个文件都有一个覆盖率报告 运行。在一个小项目中没什么大不了的,但在一个大项目中却有很大的不同。避免这种情况的最佳方法是直接使用 phpunit 覆盖率报告并在所有 arc diff 中使用 --no-coverage 标志。