smytsyk-dev / testspy
dev-master
2019-03-14 21:29 UTC
Requires
- php: ^7.2
- ext-json: *
- ext-simplexml: *
- phpunit/phpunit: ^6.5
- psr/log: ^1.1
- psr/simple-cache: ^1.0
- symfony/cache: ^4.2
- symfony/config: ^3.4
- symfony/console: ^3.4
- symfony/yaml: ^4.1
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