Symfony phpunit 测试 'Killed'
Symfony phpunit test 'Killed'
我使用 entityManager 获取我的存储库,但如果我尝试以任何方式访问它,似乎测试开始无休止的循环,然后自行终止。无论我是试图在里面找到一个元素,还是只打印整个变量,测试都会结束。
public function testStuff()
{
$moduleRepository = $this->entityManager->getRepository(Module::class);
fwrite(STDERR, print_r("asd", TRUE));
//$result = $moduleRepository->find(1);
fwrite(STDERR, print_r($moduleRepository, TRUE));
}
输出:
PHPUnit 9.5.5 by Sebastian Bergmann and contributors.
Testing
asdKilled
不访问变量:
public function testStuff()
{
$moduleRepository = $this->entityManager->getRepository(Module::class);
fwrite(STDERR, print_r("asd", TRUE));
//$result = $moduleRepository->find(1);
//fwrite(STDERR, print_r($moduleRepository, TRUE));
}
输出:
PHPUnit 9.5.5 by Sebastian Bergmann and contributors.
Testing
asdmodule (App\Tests\module)
☢ Stuff
Time: 00:00.266, Memory: 22.00 MB
OK, but incomplete, skipped, or risky tests!
Tests: 1, Assertions: 0, Risky: 1.
我知道如果不调用变量 getRepository 甚至不会启动,但从第一次测试中您可以看到该方法已完成且没有任何错误,只有当您尝试访问它时才会出现问题。
$this->assertEquals(25,count($moduleRepository));
在我尝试断言我的结果后它奏效了。
这并没有具体回答您的问题,但对于理解“被杀”部分可能也很重要,对于未来的访问者来说也是如此。
这是 Unix 错误消息“Killed”和 other users are also seeing it in tests(这里也与数据库相关)。
这不是输出它的 Phpunit,而是内核杀死 PHP 进程,运行s Phpunit,可能 Out Of Memory Killer (OOM Killer) and as you can imagine, being Out of memory (OOM) 不是你想要的状态喜欢拥有 - 你的内核也不喜欢。
与您的描述相似:
it seems that the test starts endless cycle
并且可能会消耗越来越多的内存,直到内核终止进程。
然后在终端中打印“Killed”消息。
最有可能的情况是 $this->entityManager
不正确 initialized/configured 因为您在测试方法中找到了点。
有时清理代码出错也会发生这种情况,但这种可能性较小。更多的时候是测试治具的配置。
现在这可能不能给你确切的地方和解决办法,但希望能给你足够的指点。由于此类错误可能很难调试,因此有助于单独创建新的测试用例以仅测试此行为并使用尽可能少的测试代码重现它。
运行 测试套件仅包含该测试用例,并且当它易于重现时,检查调试是什么在无限循环中启动。通常它是一个特定的条件,例如。缺少配置或初始化。
由于案例已经是孤立的,孤立地进行通常会带来更好更快的结果。如果您 运行 将来遇到类似的问题,您已经有一个测试用例来说明如何完成(或改进)。
我使用 entityManager 获取我的存储库,但如果我尝试以任何方式访问它,似乎测试开始无休止的循环,然后自行终止。无论我是试图在里面找到一个元素,还是只打印整个变量,测试都会结束。
public function testStuff()
{
$moduleRepository = $this->entityManager->getRepository(Module::class);
fwrite(STDERR, print_r("asd", TRUE));
//$result = $moduleRepository->find(1);
fwrite(STDERR, print_r($moduleRepository, TRUE));
}
输出:
PHPUnit 9.5.5 by Sebastian Bergmann and contributors.
Testing
asdKilled
不访问变量:
public function testStuff()
{
$moduleRepository = $this->entityManager->getRepository(Module::class);
fwrite(STDERR, print_r("asd", TRUE));
//$result = $moduleRepository->find(1);
//fwrite(STDERR, print_r($moduleRepository, TRUE));
}
输出:
PHPUnit 9.5.5 by Sebastian Bergmann and contributors.
Testing
asdmodule (App\Tests\module)
☢ Stuff
Time: 00:00.266, Memory: 22.00 MB
OK, but incomplete, skipped, or risky tests!
Tests: 1, Assertions: 0, Risky: 1.
我知道如果不调用变量 getRepository 甚至不会启动,但从第一次测试中您可以看到该方法已完成且没有任何错误,只有当您尝试访问它时才会出现问题。
$this->assertEquals(25,count($moduleRepository));
在我尝试断言我的结果后它奏效了。
这并没有具体回答您的问题,但对于理解“被杀”部分可能也很重要,对于未来的访问者来说也是如此。
这是 Unix 错误消息“Killed”和 other users are also seeing it in tests(这里也与数据库相关)。
这不是输出它的 Phpunit,而是内核杀死 PHP 进程,运行s Phpunit,可能 Out Of Memory Killer (OOM Killer) and as you can imagine, being Out of memory (OOM) 不是你想要的状态喜欢拥有 - 你的内核也不喜欢。
与您的描述相似:
it seems that the test starts endless cycle
并且可能会消耗越来越多的内存,直到内核终止进程。
然后在终端中打印“Killed”消息。
最有可能的情况是 $this->entityManager
不正确 initialized/configured 因为您在测试方法中找到了点。
有时清理代码出错也会发生这种情况,但这种可能性较小。更多的时候是测试治具的配置。
现在这可能不能给你确切的地方和解决办法,但希望能给你足够的指点。由于此类错误可能很难调试,因此有助于单独创建新的测试用例以仅测试此行为并使用尽可能少的测试代码重现它。
运行 测试套件仅包含该测试用例,并且当它易于重现时,检查调试是什么在无限循环中启动。通常它是一个特定的条件,例如。缺少配置或初始化。
由于案例已经是孤立的,孤立地进行通常会带来更好更快的结果。如果您 运行 将来遇到类似的问题,您已经有一个测试用例来说明如何完成(或改进)。