Codeception不会运行任何测试。失败,没有错误,在运行任何测试之前退出

时间:2015-09-23 17:57:40

标签: testing syntax-error codeception acceptance-testing

我去进行验收测试,但它只输出 Codeception PHP Testing Framework v2.0.12 Powered by PHPUnit 4.5.1 by Sebastian Bergmann and contributors. 然后退出任何错误消息。没有测试运行,没有错误消息。 浏览器测试工作正常,只有验收测试被打破。

我已经准备好解决了这个问题,但我想创建一个记录,以便下次我或其他任何人遇到这个问题。

如果您在没有任何错误或失败消息的情况下退出代码,则意味着您的代码中存在错误。我在Acceptance Helper文件中发现了错误,其中我有一个函数的副本。函数在php中不能具有相同的名称,因此一切都失败了。但是codeception不会输出任何错误消息。

为了解决这个问题,您需要查看Helper函数以查找语法错误,或者它可能在您的实际测试中。 它失败的原因是代码在php代码中遇到错误,并且死了,不会抛出任何错误。让你感到困惑和沮丧。现在你可以找到这个问题,然后回去做你正在做的事情。

YAY!

2 个答案:

答案 0 :(得分:0)

在测试代码中的某个地方存在语法错误,找到并摆脱它,它会起作用。我敢打赌,错误发生在AcceptanceHelper.php或浏览器中,或者什么样的西装都不会运行测试。

答案 1 :(得分:0)

如果您看到此行为(退出代码接收而没有任何错误消息),则可能在某处发生了致命的PHP错误,但这不一定是您自己的代码或您通过代码接收生成的文件中的代码。

根据您的PHP配置,这些错误应显示在错误日志中,即使它们没有输出到控制台。

例如,如果您在Mac上使用MAMP,则默认情况下,错误日志位于此处:/Applications/MAMP/logs/php_error.log

清除PHP错误日志,运行您的(无效的)测试,然后再次检查日志。它应该提供更多的见识。

在我的情况下,这是在Laravel 5.5上运行代码接收4的问题,因此symfony/service-contracts包中缺少类。使用composer安装此软件包克服了“看不见”的问题(尽管我最终不得不降级到composer 3,因为似乎没有一套兼容的symfony / Laravel 5.5 / composer 4软件包)。