您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
phpunit跳过测试与markTestSkipped
发布时间:2021-09-21 21:18:52编辑:雪饮阅读()
有时候某些条件无法测试,就比如某项测试需要用到mysqli扩展,但是当前测试环境中没有mysqli扩展。
则测试用例写如:
DatabaseTest.php:
<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;
final class DatabaseTest extends TestCase
{
protected function setUp(): void
{
if (!extension_loaded('mysqli')) {
$this->markTestSkipped(
'The MySQLi extension is not available.'
);
}
}
public function testConnection(): void
{
$this->assertTrue(true);
}
public function testAdd(): void
{
$this->assertTrue(true);
}
}
use PHPUnit\Framework\TestCase;
final class DatabaseTest extends TestCase
{
protected function setUp(): void
{
if (!extension_loaded('mysqli')) {
$this->markTestSkipped(
'The MySQLi extension is not available.'
);
}
}
public function testConnection(): void
{
$this->assertTrue(true);
}
public function testAdd(): void
{
$this->assertTrue(true);
}
}
这里判断了,若没有mysqli扩展,则整个测试用例类的所有测试方法都不会执行测试任务。
像是这里第一次执行时候是有mysqli扩展,则执行正常:
C:\Users\Administrator\PhpstormProjects\untitled\organizing>D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar C:\Users\Administrator\PhpstormProjects\untitled\organizing\tests\DatabaseTest.php --verbose
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
Runtime: PHP 7.3.4
Configuration: C:\Users\Administrator\PhpstormProjects\untitled\organizing\phpunit.xml
.. 2 / 2 (100%)
Time: 00:00.009, Memory: 20.00 MB
OK (2 tests, 2 assertions)
那么当在php.ini中注释掉extension=mysqli,则再次运行就会出现了跳过测试的提示了,就不会测试本测试用例类中的所有测试方法了。
C:\Users\Administrator\PhpstormProjects\untitled\organizing>D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar C:\Users\Administrator\PhpstormProjects\untitled\organizing\tests\DatabaseTest.php --verbose
PHPUnit 9.5.8 by Sebastian Bergmann and contributors.
Runtime: PHP 7.3.4
Configuration: C:\Users\Administrator\PhpstormProjects\untitled\organizing\phpunit.xml
SS 2 / 2 (100%)
Time: 00:00.008, Memory: 20.00 MB
There were 2 skipped tests:
1) DatabaseTest::testConnection
Warning: include(PHPUnit\Composer\Autoload\ClassLoader.php): failed to open stream: No such file or directory in C:\Users\Administrator\PhpstormProjects\untitled\organizing\src\autoload.php on line 3
Call Stack:
0.0145 1571576 1. {main}() D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar:0
0.1400 18893584 2. PHPUnit\TextUI\Command::main(???) D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar:2249
0.1400 18893696 3. PHPUnit\TextUI\Command->run(array(3), true) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/Command.php:93
0.1453 19071200 4. PHPUnit\TextUI\TestRunner->run(class PHPUnit\Framework\TestSuite, array(16), array(0), true) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/Command.php:124
0.1821 19119152 5. PHPUnit\TextUI\DefaultResultPrinter->printResult(class PHPUnit\Framework\TestResult) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/TestRunner.php:496
0.1827 19119176 6. PHPUnit\TextUI\DefaultResultPrinter->printSkipped(class PHPUnit\Framework\TestResult) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:158
0.1827 19119176 7. PHPUnit\TextUI\DefaultResultPrinter->printDefects(array(2), string(12)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:315
0.1844 19119176 8. PHPUnit\TextUI\DefaultResultPrinter->printDefect(class PHPUnit\Framework\TestFailure, long) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:272
0.1848 19119176 9. PHPUnit\TextUI\DefaultResultPrinter->printDefectTrace(class PHPUnit\Framework\TestFailure) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:279
0.1848 19119176 10. PHPUnit\Framework\SkippedTestError->__toString() phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:288
0.1848 19119240 11. PHPUnit\Util\Filter::getFilteredStacktrace(class PHPUnit\Framework\SkippedTestError) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Framework/Exception/Exception.php:58
0.1848 19120376 12. PHPUnit\Util\Filter::shouldPrintFrame(array(2), string(25), class PHPUnit\Util\ExcludeList) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/Filter.php:57
0.1848 19120520 13. PHPUnit\Util\Filter::fileIsExcluded(string(97), class PHPUnit\Util\ExcludeList) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/Filter.php:76
0.1848 19120520 14. PHPUnit\Util\ExcludeList->isExcluded(string(97)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/Filter.php:80
0.1848 19120520 15. PHPUnit\Util\ExcludeList->initialize() phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:166
0.1848 19120520 16. class_exists(string(37)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:182
0.1848 19120584 17. spl_autoload_call(string(37)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:182
0.1849 19120648 18. autoload(string(37)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:182
Warning: include(): Failed opening 'PHPUnit\Composer\Autoload\ClassLoader.php' for inclusion (include_path='.;C:\php\pear') in C:\Users\Administrator\PhpstormProjects\untitled\organizing\src\autoload.php on line 3
Call Stack:
0.0145 1571576 1. {main}() D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar:0
0.1400 18893584 2. PHPUnit\TextUI\Command::main(???) D:\phpstudy_pro\Extensions\php\php7.3.4nts\phpunit-9.5.8.phar:2249
0.1400 18893696 3. PHPUnit\TextUI\Command->run(array(3), true) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/Command.php:93
0.1453 19071200 4. PHPUnit\TextUI\TestRunner->run(class PHPUnit\Framework\TestSuite, array(16), array(0), true) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/Command.php:124
0.1821 19119152 5. PHPUnit\TextUI\DefaultResultPrinter->printResult(class PHPUnit\Framework\TestResult) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/TestRunner.php:496
0.1827 19119176 6. PHPUnit\TextUI\DefaultResultPrinter->printSkipped(class PHPUnit\Framework\TestResult) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:158
0.1827 19119176 7. PHPUnit\TextUI\DefaultResultPrinter->printDefects(array(2), string(12)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:315
0.1844 19119176 8. PHPUnit\TextUI\DefaultResultPrinter->printDefect(class PHPUnit\Framework\TestFailure, long) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:272
0.1848 19119176 9. PHPUnit\TextUI\DefaultResultPrinter->printDefectTrace(class PHPUnit\Framework\TestFailure) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:279
0.1848 19119176 10. PHPUnit\Framework\SkippedTestError->__toString() phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/TextUI/DefaultResultPrinter.php:288
0.1848 19119240 11. PHPUnit\Util\Filter::getFilteredStacktrace(class PHPUnit\Framework\SkippedTestError) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Framework/Exception/Exception.php:58
0.1848 19120376 12. PHPUnit\Util\Filter::shouldPrintFrame(array(2), string(25), class PHPUnit\Util\ExcludeList) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/Filter.php:57
0.1848 19120520 13. PHPUnit\Util\Filter::fileIsExcluded(string(97), class PHPUnit\Util\ExcludeList) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/Filter.php:76
0.1848 19120520 14. PHPUnit\Util\ExcludeList->isExcluded(string(97)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/Filter.php:80
0.1848 19120520 15. PHPUnit\Util\ExcludeList->initialize() phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:166
0.1848 19120520 16. class_exists(string(37)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:182
0.1848 19120584 17. spl_autoload_call(string(37)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:182
0.1849 19120648 18. autoload(string(37)) phar://D:/phpstudy_pro/Extensions/php/php7.3.4nts/phpunit-9.5.8.phar/phpunit/Util/ExcludeList.php:182
The MySQLi extension is not available.
C:\Users\Administrator\PhpstormProjects\untitled\organizing\tests\DatabaseTest.php:10
2) DatabaseTest::testAdd
The MySQLi extension is not available.
C:\Users\Administrator\PhpstormProjects\untitled\organizing\tests\DatabaseTest.php:10
OK, but incomplete, skipped, or risky tests!
Tests: 2, Assertions: 0, Skipped: 2.
同时可以看到这里输出结果中有两个S,这是因为被跳过的测试都用S标记,那么两个测试方法都被跳过了,所以就输出结果中有了两个S了。
同之前未完成的测试一样,这个跳过测试markTestSkipped方法也是存在无参的重载,用法也是和未完成的测试那个无参重载一样啦。
关键字词:phpunit,跳过测试,markTestSkipped
相关文章
- phpunit未完成的测试与markTestIncomplete重载
- phpunit未完成的测试与markTestIncomplete
- phpunit参数enforce-time-limit与enforceTimeLimit(2)
- phpunit参数enforce-time-limit与enforceTimeLimit
- phpunit测试执行期间产生的输出-被测试代码及beStrict
- phpunit无用测试的检查和关闭
- phpunit中testsuite配置的file模式
- phpunit中configuration免加载phpunit.xml
- phpunit参数testsuite的使用
- phpunit单文件测试的更细粒度filter