Php 为什么';我的脚本在访问未定义数组中的值时是否会触发通知?

Php 为什么';我的脚本在访问未定义数组中的值时是否会触发通知?,php,phpunit,Php,Phpunit,我有一个测试方法如下: $row = $this->GetRowFromUserTable($id); $this->assertLessThan(time(), time($row['last_update'])); 当$row为null时,对$row['last_update']的访问应触发E_通知,并且此测试应失败,但不会失败 这段代码在第一次断言时失败,因此我知道$row为null(fixture是相同的): 当我写这篇文章时: $row = $this->GetRo

我有一个测试方法如下:

$row = $this->GetRowFromUserTable($id);
$this->assertLessThan(time(), time($row['last_update']));
当$row为null时,对$row['last_update']的访问应触发E_通知,并且此测试应失败,但不会失败

这段代码在第一次断言时失败,因此我知道$row为null(fixture是相同的):

当我写这篇文章时:

$row = $this->GetRowFromUserTable($id);
$this->assertEquals(E_ALL, error_reporting());
$this->assertLessThan(time(), time($row['last_update']));
它成功了,所以我也确信错误报告是正确的,这种情况一定与PHPUnit有关

我使用phpunit3.5.6

我读到这个问题: 但答案是建议使用更新版本的PHPUnit,但答案是2009年的,所以不是

编辑:我使用NetBeans IDE 6.9.1运行测试。

您是否将配置属性设置为“true”

说“convertNoticesToExceptions”也是我唯一真正的猜测(+1)

你能写一个
$foo=$undefinedVariable测试用例中的某个地方,看看这是否也不会触发通知//测试不会失败

要检查您的phpunit/php安装是否正常(并可能缩小问题范围),您可以尝试:

<?php

class myTest extends PHPUnit_Framework_TestCase {
    public function testFoo() {
        $x = $foo;
        $this->assertTrue(true);
    }
}
它显示输出:

塞巴斯蒂安·伯格曼的PHPUnit 3.5.6

E

时间:0秒,内存:2.50Mb

有1个错误:

1) myTest::testFoo未定义变量: 福

/home/user/foo.php:5


也许这有点帮助

您描述的具体案例没有发出通知。访问已定义数组的未定义键会引起
E_注意
,但奇怪的是,试图访问空值,而数组却没有。

也许我表达得不好。我不期望执行会中断,但PHPUnit告诉我执行测试方法会产生一个通知。换句话说,我希望我的测试失败,如果它引起注意的话。还有一个信息:我使用NetBeans IDE 6.9.1运行我的测试。请将此移到问题下的注释区域。好的,此测试失败,因此我现在需要处理一些问题。是否有任何phpunit(CLI)参数可以显示所使用的配置参数值?哇,我不知道。接得好。谢谢你的回答:我猜你的意思是
$this->assertLessThan(time(),$row['last_update']),而不是时间($row['last\u update'])
<?php

class myTest extends PHPUnit_Framework_TestCase {
    public function testFoo() {
        $x = $foo;
        $this->assertTrue(true);
    }
}
phpunit --no-configuration foo.php