【发布时间】:2012-09-26 14:31:38
【问题描述】:
我有一个 PHPUnit 引导文件,它创建一个用于与数据库相关的单元测试的测试数据库,并注册一个关闭函数以在测试完成后销毁数据库。每次运行都有一个新的数据库!
问题:当测试失败时,我想保留数据库以进行调试。目前,我必须手动禁用我的register_shutdown_function() 调用,然后重新运行测试。
如果我可以访问 PHPUnit 运行的最终成功/失败状态,我可以根据 PHPUnit 引导文件中的开关动态触发数据库销毁过程。
PHPUnit 将此信息存储在某处以触发正确的结果事件,即输出 OK 与 FAILURES!。但是,据我发现,此信息不会暴露给用户级引导文件。有人做过这样的事吗?
如果您想探索,这里是您从命令行运行 PHPUnit 时出现的 PHPUnit 堆栈跟踪...
PHP 1. {main}() /usr/bin/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:46
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:130
PHP 4. PHPUnit_TextUI_Command->handleArguments() /usr/share/php/PHPUnit/TextUI/Command.php:139
PHP 5. PHPUnit_TextUI_Command->handleBootstrap() /usr/share/php/PHPUnit/TextUI/Command.php:620
PHP 6. PHPUnit_Util_Fileloader::checkAndLoad() /usr/share/php/PHPUnit/TextUI/Command.php:867
PHP 7. PHPUnit_Util_Fileloader::load() /usr/share/php/PHPUnit/Util/Fileloader.php:79
PHP 8. include_once() /usr/share/php/PHPUnit/Util/Fileloader.php:95
PHP 9. [YOUR PHPUNIT BOOTSTRAP RUNS HERE]
【问题讨论】:
-
不能直接把php单元脚本包装起来看一下它的退出码吗?
-
引导程序(事实上,我们所有的测试)在 PHPUnit 执行过程中被加载。您在层次结构中更深,并且从未真正“接触” PHPUnit 脚本内部。
标签: php unit-testing phpunit