2

由于我在 PHPUnit/PHP 代码覆盖率和 Xdebug方面仍有问题,我决定尝试另一种方式 - 使用phpdbg

我按照他的指示做。在 CMD 和 Git Bash 中尝试过,但结果是一样的,它失败了:

$ composer info | grep "phpunit"
phpunit/php-code-coverage           4.0.0  Library that provides collectio...
phpunit/php-file-iterator           1.4.1  FilterIterator implementation t...
phpunit/php-text-template           1.2.1  Simple template engine.
phpunit/php-timer                   1.0.8  Utility class for timing
phpunit/php-token-stream            1.4.8  Wrapper around PHP's tokenizer ...
phpunit/phpunit                     5.4.6  The PHP Unit Testing framework.
phpunit/phpunit-mock-objects        3.2.3  Mock Object library for PHPUnit

$ phpdbg -qrr ./vendor/bin/phpunit -v

dir=$(d=${0%[/\\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)

# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
        # Cygwin paths start with /cygdrive/ which will break windows PHP,
        # so we need to translate the dir path to windows format. However
        # we could be using cygwin PHP which does not require this, so we
        # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
        if [[ $(which php) == /cygdrive/* ]]; then
                dir=$(cygpath -m "$dir");
        fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/phpunit" "$@"

如何让 PHPUnit & PHP Code Coverage & phpdbg 在 Windows Server 上工作?

4

1 回答 1

7

在 Windows 下,其中的文件似乎vendor/bin实际上是批处理文件,调用原始文件(而不是 phpdbg 可以理解的 php 文件)。

在这种情况下:

dir=$(d=${0%[/\\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)
                                  ^^^^^^^^^^^^^^^^^^
"${dir}/phpunit" "$@"
 ^^^^^^^^^^^^^^

../phpunit/phpunit/phpunit(此路径相对于vendor/bin);因此实际文件位于vendor/phpunit/phpunit/phpunit.

然后你可以直接调用它phpdbg -qrr vendor/phpunit/phpunit/phpunit

于 2016-11-07T09:24:44.120 回答