为什么 phpUnit 测试不起作用? ZF2

Why phpUnit test does not work? ZF2

我正在阅读 Slavey Karadzhov 的书 "Learn ZF2: Learning By Example"。现在我在第 103-107 页。我正在尝试 运行 描述的 PHPUnit 测试,但没有任何反应... 问题出在哪里以及如何解决?

要进入相同的情况,您必须:

git clone https://github.com/slaff/learnzf2.git .

composer.phar self-update
composer.phar install

git stash
git checkout 'ch-unittest'

这应该会为您带来与我拥有的相同的文件(=如书中所述)。

现在,我尝试 运行 这个命令:

ZF2_PATH=`pwd`/vendor/zendframework/zendframework/library \php vendor/bin/phpunit -c module/User/tests/

并且该命令没有按预期工作... 我希望有一些测试结果输出,但我得到的只是输出 与我在 vendor/bin/phpunit 文件中的内容相似。它是:

#!/usr/bin/env sh
SRC_DIR="`pwd`"
cd "`dirname "[=12=]"`"
cd "../phpunit/phpunit/composer/bin"
BIN_TARGET="`pwd`/phpunit"
cd "$SRC_DIR"
"$BIN_TARGET" "$@"

更准确地说,第一行 (#!/usr/bin/env sh) 没有出现在输出中。其余的确实出现了。

**

我运行正在 Windows 8.1 Pro OS 上使用 Git Bash(git 版本 1.9。4.msysgit.1). php 关键字似乎工作正常,因为编写 php -v 可以按预期工作(输出 PHP 5.5.12 (cli) (built: Apr 30 2014 11:20:58) ...

我自己的猜测是 Git bash 无法解析它在 vendor/bin/phpunit 中找到的代码,所以在那里失败了...但这只是猜测...

编辑#1: 刚刚尝试使用 LAMP 设置的共享主机。一切顺利。似乎 Zend Framework 2 和 Windows 在某些点上不是那么友好(例如在刚才提到的单元测试用例中)。看起来非常好的书(没有讽刺,它确实是好书)如果能再多一章介绍 VirtualBox + Vagrant + PuPHPet(或类似的东西)会更好。

书中使用的composer.json文件行:phpunit/phpunit" : "3.7.*

我已将 phpunit/phpunit" : "3.7.* 更改为 phpunit/phpunit" : "4.5.*,因为 4.5 版本的 PHPUnit 是当前稳定的。 然后,当然:php composer.phar update 那么这个会很好用:

ZF2_PATH=`pwd`/vendor/zendframework/zendframework/library \php vendor/phpunit/phpunit/phpunit -c module/User/tests/

上面的命令和书上的不一样

在 Windows 8.1、Ubuntu Trusty 14.04 LTS x64 上测试,隔离开发环境提供 here。效果不错。

还有一种方法可以让PHPUnit 3.7.* 在所有系统上运行(我测试过的相同系统),但是命令必须改为:

ZF2_PATH=`pwd`/vendor/zendframework/zendframework/library \php vendor/phpunit/phpunit/composer/bin/phpunit -c module/User/tests/

上面的命令和书上的不一样

所以...这里我们提到了两种与 PHPUnit 测试一起工作的方法。由我们决定 两个更好。我更喜欢目前将 PHPUnit 版本增加到 4.5 的版本。

非常感谢 Slavey Karadzhov - 本书的作者,他为使用 Zend Framework 2(ZF2) 进行编程提供了独立的开发环境。
另外,感谢@jamaldo、@steeler 和@malte,他们的activity(post,评论)让我走上了正轨。我说的post在这里: