PHP 单元测试 : Is it possible to test for a Fatal Error?

标签 php unit-testing singleton simpletest fatal-error

FWIW 我正在使用 SimpleTest 1.1alpha。

我有一个单例类,我想编写一个单元测试,通过尝试实例化该类(它有一个私有(private)构造函数)来保证该类是单例。

这显然会导致 fatal error :

Fatal error: Call to private FrontController::__construct()

有什么方法可以“捕获”该 fatal error 并报告已通过测试吗?

最佳答案

没有。 fatal error 停止脚本的执行。

并没有必要以那种方式测试单例。如果你坚持检查构造函数是否是私有(private)的,你可以使用 ReflectionClass:getConstructor()

public function testCannotInstantiateExternally()
{
    $reflection = new \ReflectionClass('\My\Namespace\MyClassName');
    $constructor = $reflection->getConstructor();
    $this->assertFalse($constructor->isPublic());
}

另一件需要考虑的事情是单例类/对象是 TTD 中的一个障碍,因为它们很难模拟。

关于PHP 单元测试 : Is it possible to test for a Fatal Error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753811/

相关文章:

spring - @ExceptionHandler 不适用于 Spring MVC 3.1 单元测试

java - 在调用模拟对象的方法时做一些事情

node.js - 如何生成 vscode TypeScript 扩展覆盖率报告

javascript - 在 Else If 语句中使用来自 JQuery .get 函数的数据

php - 无法在数组元素中设置默认值 0

php - 连接错误。数据库未连接

javascript - 如何将 href 回显到可编辑 div

C# 类库 - 单例设计模式

c# - 在 C# 中使用静态构造函数创建单例

java - 无法让@Singleton 做任何事情