3

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

我的问题是奥术单元测试(使用arc unit或部分arc diff)需要超过四分钟才能运行。另一方面,PHPUnit 只需要几秒钟。

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

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

4

1 回答 1

0

事实证明,这实际上不是由测试引起的,而是由覆盖引起的。默认情况下,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直接使用覆盖率报告并在所有s中使用--no-coverage标志。arc diff

于 2017-05-11T21:38:30.373 回答