vektah / phpunit-parallel
此包已被废弃,不再维护。没有建议的替代包。
关于此包最新版本(1.5.3)没有提供许可证信息。
PHPUnit 的并发测试执行器
1.5.3
2016-07-13 06:13 UTC
Requires
- php: >=5.5.0
- react/react: ~0.4
- symfony/console: *
- vektah/common: *
Requires (Dev)
- phake/phake: v2.0.0-rc1
- phpunit/phpunit: ~4
- squizlabs/php_codesniffer: ~1.0
- vektah/bugfree-dangerzone: *
- vektah/psr2: *
README
另一个 PHPUnit 并发测试执行器
我不再维护此项目,它只作为存档保留。
想找替代方案?请查看 fasttest
它是如何工作的?
phpunit-parallel 使用基于 react-php 的事件循环与多个工作进程通信。它通过 Unix 管道(fd=3)与这些进程通信。STDOUT 会传递过去,STDERR 会导致测试出错。如果一个进程崩溃,你将知道在它崩溃时正在运行哪个测试。
获取它!
将其添加到项目的 composer.json
"require-dev": {
"vektah/phpunit-parallel": "~1.0"
},
并执行 composer update vektah/phpunit-parallel
运行它!
默认情况下不需要任何选项,phpunit-parallel 会自动获取你的 phpunit.xml 并找到你的测试。只需运行
./vendor/bin/phpunit-parallel
如果你的配置在奇怪的位置,使用 -c path/to/phpunit.xml
应该可以解决这个问题。
你也可以指定要运行的测试文件列表
./vendor/bin/phpunit-parallel src/tests/AllTheThingsTest.php
还是不明白?寻求帮助!
./vendor/bin/phpunit-parallel --help
格式化它!
默认的 lane
格式化器在运行 paratests 的测试套件时看起来像这样。
phpunit-parallel % ./bin/phpunit-parallel
| | |✓| | | 1% 0ms 0.0MB DataProviderTest::testNothing with data set #2
... snip ...
| | |✓| | | 78% 0ms 0.0MB DataProviderTest::testNothing with data set #69
| | | |✓| | 79% 11ms 0.5MB WorkerTestExecutorTest::testStartTestSendsNextTest
| | |✓| | | 80% 6ms 0.5MB WorkerTestExecutorTest::testStdErrWhileExecutingTestSendsOnlyOneResult
|✓| | | | | 81% 10ms 0.6MB WorkerTestExecutorTest::testCompletingTestSendsResultToDistributor
|✓| | | | | 82% 0ms 0.1MB WorkerTestExecutorTest::testProcessSendsUnexpectedResult
| | |✓| | | 83% 1ms 0.1MB WorkerTestExecutorTest::testProcessCrashWithoutStderr
| | | |✓| | 84% 1ms 0.1MB WorkerTestExecutorTest::testProcessCrashWithActiveTest
|✓| | | | | 85% 2ms 0.2MB TestRequestTest::testEncodeDecode
| | | |✓| | 86% 0ms 0.0MB TestResultTest::testCreateFromRequest
| | |✓| | | 87% 3ms 0.2MB TestResultTest::testEncodeDecode
|✓| | | | | 89% 0ms 0.1MB BufferedReaderTest::testWaitingLines
|✓| | | | | 90% 0ms 0.0MB BufferedReaderTest::testMultipleCallsForOneLineWaiting
| | | |✓| | 91% 2ms 0.1MB BufferedReaderTest::testPendingPromises
| | |✓| | | 92% 2ms 0.1MB BufferedReaderTest::testMixedWaitingAndPromises
|✓| | | | | 93% 0ms 0.1MB BufferedReaderTest::testMultipleCallsForOneLinePending
| | | |✓| | 94% 0ms 0.0MB BufferedReaderTest::testMultipleLinesInOneCallWaiting
|✓| | | | | 95% 0ms 0.0MB BufferedReaderTest::testMultipleLinesSplitAcrossWaitingPending
| | |✓| | | 96% 0ms 0.0MB BufferedReaderTest::testMultipleLinesInOneCallPending
| | | |✓| | 97% 0ms 0.0MB BufferedReaderTest::testPendingThenWaiting
| | | | |✓| 98% 1000ms 0.0MB SleepTest::testSleeps with data set #0
| |✓| | | | 100% 1000ms 0.0MB SleepTest::testSleeps with data set #1
-----------
Time: 1.31 seconds, Memory: 4.62Mb
OK (91 tests)
Most expensive tests by memory usage are:
0.6MB WorkerTestExecutorTest::testCompletingTestSendsResultToDistributor
0.5MB WorkerTestExecutorTest::testStdErrWhileExecutingTestSendsOnlyOneResult
0.5MB WorkerTestExecutorTest::testStartTestSendsNextTest
0.2MB TestResultTest::testEncodeDecode
0.2MB TestRequestTest::testEncodeDecode
Most expensive tests by duration are:
1000ms SleepTest::testSleeps with data set #1
1000ms SleepTest::testSleeps with data set #0
11ms WorkerTestExecutorTest::testStartTestSendsNextTest
10ms WorkerTestExecutorTest::testCompletingTestSendsResultToDistributor
6ms WorkerTestExecutorTest::testStdErrWhileExecutingTestSendsOnlyOneResult
这是怎么回事?它为每个工作进程绘制一个垂直通道,并在测试完成后在该工作进程的列中标记结果。如果测试修改了全局/静态状态并导致另一个测试失败,这可能会很有用。看到失败了吗?查看通道并查看运行在该通道之前的测试。
还有 xunit
用于 PHPUnit 风格的输出
phpunit-parallel % ./bin/phpunit-parallel --formatter xunit
PHPUnit Parallel 1.0.0
............................................................... 63 / 91 ( 69%)
............................
Time: 1.31 seconds, Memory: 4.62Mb
OK (91 tests)
Most expensive tests by memory usage are:
0.6MB WorkerTestExecutorTest::testCompletingTestSendsResultToDistributor
0.5MB WorkerTestExecutorTest::testStdErrWhileExecutingTestSendsOnlyOneResult
0.5MB WorkerTestExecutorTest::testStartTestSendsNextTest
0.2MB TestResultTest::testEncodeDecode
0.2MB TestRequestTest::testEncodeDecode
Most expensive tests by duration are:
1000ms SleepTest::testSleeps with data set #0
1000ms SleepTest::testSleeps with data set #1
10ms WorkerTestExecutorTest::testStdErrWhileExecutingTestSendsOnlyOneResult
10ms WorkerTestExecutorTest::testStartTestSendsNextTest
7ms WorkerTestExecutorTest::testCompletingTestSendsResultToDistributor
或 tap
phpunit-parallel % ./bin/phpunit-parallel --formatter tap
TAP version 13
1..91
ok 1 - phpunit_parallel\dummy\DataProviderTest::testNothing with data set #0
... snip ...
ok 67 - phpunit_parallel\dummy\DataProviderTest::testNothing with data set #66
ok 71 - phpunit_parallel\dummy\OutputTest::testEcho
ok 74 - phpunit_parallel\ipc\WorkerTestExecutorTest\WorkerTestExecutorTest::testStartTestSendsNextTest
ok 75 - phpunit_parallel\ipc\WorkerTestExecutorTest\WorkerTestExecutorTest::testCompletingTestSendsResultToDistributor
ok 76 - phpunit_parallel\ipc\WorkerTestExecutorTest\WorkerTestExecutorTest::testStdErrWhileExecutingTestSendsOnlyOneResult
ok 77 - phpunit_parallel\ipc\WorkerTestExecutorTest\WorkerTestExecutorTest::testProcessCrashWithActiveTest
ok 78 - phpunit_parallel\ipc\WorkerTestExecutorTest\WorkerTestExecutorTest::testProcessCrashWithoutStderr
ok 79 - phpunit_parallel\ipc\WorkerTestExecutorTest\WorkerTestExecutorTest::testProcessSendsUnexpectedResult
ok 80 - phpunit_parallel\model\TestRequestTest::testEncodeDecode
ok 81 - phpunit_parallel\model\TestResultTest::testEncodeDecode
ok 82 - phpunit_parallel\model\TestResultTest::testCreateFromRequest
ok 84 - phpunit_parallel\stream\BufferedReaderTest::testPendingPromises
ok 83 - phpunit_parallel\stream\BufferedReaderTest::testWaitingLines
ok 86 - phpunit_parallel\stream\BufferedReaderTest::testMultipleCallsForOneLineWaiting
ok 85 - phpunit_parallel\stream\BufferedReaderTest::testMixedWaitingAndPromises
ok 87 - phpunit_parallel\stream\BufferedReaderTest::testMultipleCallsForOneLinePending
ok 88 - phpunit_parallel\stream\BufferedReaderTest::testMultipleLinesInOneCallWaiting
ok 91 - phpunit_parallel\stream\BufferedReaderTest::testPendingThenWaiting
ok 90 - phpunit_parallel\stream\BufferedReaderTest::testMultipleLinesSplitAcrossWaitingPending
ok 89 - phpunit_parallel\stream\BufferedReaderTest::testMultipleLinesInOneCallPending
ok 72 - phpunit_parallel\dummy\SleepTest::testSleeps with data set #0
ok 73 - phpunit_parallel\dummy\SleepTest::testSleeps with data set #1