gpt4 book ai didi

断言失败时,phpunit 运行速度非常慢

转载 作者:行者123 更新时间:2023-12-04 04:53:08 25 4
gpt4 key购买 nike

我正在学习 phpunit,我注意到当我的断言失败时,摘要需要很多时间来显示结果(但不是在测试正确时)。

例如,如果我运行此测试,则需要半秒才能显示绿色条:

<?php
class SomeTest extends PHPUnit_Framework_TestCase {

public function testSomething() {
$this->assertTrue(true);
}
}
?>

但是使用失败断言的相同测试需要 12 秒才能显示红色条:
<?php
class SomeTest extends PHPUnit_Framework_TestCase {

public function testSomething() {
$this->assertTrue(false);
}
}
?>

如果我需要在开发过程中连续运行测试,现在这个时间是 Not Acceptable 。
我能做些什么来加快这个过程?

最佳答案

自从我在 Windows 7 机器上升级到 php 5.4/phpunit 3.7.24 以来,我遇到了同样的问题。
我调试并发现 PHPUnit_Util_GlobalState#phpunitFiles() 是罪魁祸首,它花了大约 7 秒的时间查找 PHPUnit 和 PEAR 文件以从堆栈跟踪中过滤掉。

我提交了一个问题:https://github.com/sebastianbergmann/phpunit/issues/1007

目前作为一种解决方法,我将尝试将文件数组缓存在磁盘上

public static function phpunitFiles()
{
if (self::$phpunitFiles === NULL) {
$phpunitFilesCache = '/path/to/my/file/phpunitFiles'; // CHANGED
if (is_file($phpunitFilesCache)) { // CHANGED
self::$phpunitFiles = unserialize(file_get_contents($phpunitFilesCache)); // CHANGED
return self::$phpunitFiles; // CHANGED
} // CHANGED
self::addDirectoryContainingClassToPHPUnitFilesList('File_Iterator');
self::addDirectoryContainingClassToPHPUnitFilesList('PHP_CodeCoverage');
self::addDirectoryContainingClassToPHPUnitFilesList('PHP_Invoker');
self::addDirectoryContainingClassToPHPUnitFilesList('PHP_Timer');
self::addDirectoryContainingClassToPHPUnitFilesList('PHP_Token');
self::addDirectoryContainingClassToPHPUnitFilesList('PHPUnit_Framework_TestCase', 2);
self::addDirectoryContainingClassToPHPUnitFilesList('PHPUnit_Extensions_Database_TestCase', 2);
self::addDirectoryContainingClassToPHPUnitFilesList('PHPUnit_Framework_MockObject_Generator', 2);
self::addDirectoryContainingClassToPHPUnitFilesList('PHPUnit_Extensions_SeleniumTestCase', 2);
self::addDirectoryContainingClassToPHPUnitFilesList('PHPUnit_Extensions_Story_TestCase', 2);
self::addDirectoryContainingClassToPHPUnitFilesList('Text_Template');

file_put_contents($phpunitFilesCache, serialize(self::$phpunitFiles)); // CHANGED
}

return self::$phpunitFiles;
}

关于断言失败时,phpunit 运行速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com