smytsyk-dev/testspy

检测器

dev-master 2019-03-14 21:29 UTC

This package is auto-updated.

Last update: 2024-09-15 11:24:22 UTC


README

1. 通知器

第一个进程应该是保持测试矩阵更新。该脚本必须在每次合并到 "master" 分支后执行。它需要实现 TestRunnerInterface。基本上是运行仓库中所有现有测试的命令。

$syncControl = new SyncControl(new Redis_TestSpy_Dao());

$testRunner = new Test_Runner();

$matrixUpdater = new MatrixUpdater($syncControl, $testRunner);
$matrixUpdater->update();

监听器

TestSpy 监听器必须包含在 PHPUnit xml 配置中。它将允许检查在运行特定测试时涉及的文件,并将其存储到存储中。带有此监听器的测试应在 "Informer" 中触发。

    <listener class="\TestSpy\SpyListener">
      <arguments>
        <object class="\Tests\Listeners\Redis_TestSpy_Dao"/>

        <!--Absolute path to the repository-->
        <string>/codebase/php/</string>
      </arguments>
    </listener>

2. 间谍

此进程负责生成包含需要运行的测试列表的配置文件,这些测试与 master 分支相比是当前分支中的更改。

如果 TestSpy 无法访问存储,它将提供默认配置的路径。它需要指定

  • 将要进行测试的仓库的路径
  • bootstrap.php 的路径
$syncControl = new SyncControl(new Redis_TestSpy_Dao());

$isTestSpyReady = $syncControl->isReady();

if ($isTestSpyReady === false) {
  echo 'default/path/to/config/with/all/tests.xml';
  exit();
}

$pathToRepo     = '/codebase/php_copy';
$branchDetector = new BranchDetector($pathToRepo, new Utilities());

$changedFiles      = $branchDetector->getChangedFiles();
$pathToBaseUnitXml = INCLUDE_PATH . '/tests/conf/phpunit.xml';

$runner = new Runner(
    new Redis_TestSpy_Dao(),
    new PhpUnitConfigBuilder($pathToBaseUnitXml),
    new Utilities(),
    new RunnerConfig(INCLUDE_PATH . '/tests/conf/bootstrap.php')
);

echo $runner->buildConfig(...$changedFiles) . PHP_EOL;

3. 配置

返回的配置应用于运行测试。

内部文档

如何运行单元测试

vendor/bin/phpunit --bootstrap bootstrap.php tests/Unit

如何运行集成测试

vendor/bin/phpunit --bootstrap bootstrap.php tests/Integration

4. 并行运行器

testSpy 运行器的多线程。有方法可以配置要运行的线程数和每次执行多少个测试。

配置

src/Parallel/Config/Resources/Config.yml

如何运行

./parallel.php refresh - 默认配置 ./parallel.php 2 10 可选配置。用法:refresh [] []

它允许同时只运行一个运行器。如果出现问题,需要手动释放锁:rm pathfrom_config/testSpy-sync-run-lock