Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这是愚蠢的失败_Php_Phpunit - Fatal编程技术网

Php 这是愚蠢的失败

Php 这是愚蠢的失败,php,phpunit,Php,Phpunit,当我单独运行$phpunit时,它会无声地失败,这就是我在没有运气的情况下试图了解的问题: $ phpunit $ echo $? => 255 $php-i| grep错误 display_errors => STDOUT => STDOUT display_startup_errors => On => On error_append_string => no value => no value error_log => /usr/local

当我单独运行
$phpunit
时,它会无声地失败,这就是我在没有运气的情况下试图了解的问题:

$ phpunit
$ echo $?
=> 255
$php-i| grep错误

display_errors => STDOUT => STDOUT
display_startup_errors => On => On
error_append_string => no value => no value
error_log => /usr/local/var/log/php_error.log => /usr/local/var/log/php_error.log
error_prepend_string => no value => no value
error_reporting => 32767 => 32767
html_errors => Off => Off
ignore_repeated_errors => Off => Off
log_errors => On => On
log_errors_max_len => 1024 => 1024
track_errors => On => On
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
xdebug.force_display_errors => On => On
xdebug.force_error_reporting => 1 => 1
xdebug.show_error_trace => Off => Off
opcache.error_log => no value => no value


phpunit --version
PHPUnit 6.0-g969991b by Sebastian Bergmann and contributors.


php --version
PHP 7.0.10-1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.10-1, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
检查语法错误,返回一切正常:

for f in $(find tests/)
> do php -l $f
> done
...
作为临时解决方法,我运行所有测试如下

find-名称“*_Test.php”-类型f-exec phpunit{}\

php\u error.log
没有日志条目,为确保文件中没有写入任何内容:

$ truncate -s0 /usr/local/var/log/php_error.log
$ phpunit
$ tail /usr/local/var/log/php_error.log
我确实有写入日志文件的权限:
-rw-rw-r--1 adam adam 0 Sep 2 11:49/usr/local/var/log/php_error.log

为了安全起见:

$ php -r "error_log('am i logged?');"
$ tail /usr/local/var/log/php_error.log
[02-Sep-2016 13:16:37 Europe/Paris] am i logged?
当我这样做的时候
phpunit测试/*
只有根目录测试上的文件正在运行,phpunit不会递归运行

这是phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         bootstrap="bootstrap.php"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory suffix=".php">./tests</directory>
        </testsuite>
    </testsuites>
</phpunit>
测试目录中的所有文件 目录应该不包含子目录,否则它将失败,如上所述,出现255个错误

$ phpunit tests/src/Uptobox/Workflow_PHP/
PHPUnit 5.5.4 by Sebastian Bergmann and contributors.

.....                                                               5 / 5 (100%)

Time: 7.03 seconds, Memory: 26.00MB

OK (5 tests, 6 assertions)
在具有测试覆盖率的目录中测试文件

$ phpunit tests/Upload__FN_Test.php
PHPUnit 5.5.4 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 1.27 seconds, Memory: 24.00MB

OK (1 test, 1 assertion)
$ phpunit tests/src/Uptobox/Workflow_PHP/ --coverage-text --whitelist src/Uptobox/Uptobox.php
PHPUnit 5.5.4 by Sebastian Bergmann and contributors.

.....                                                               5 / 5 (100%)

Time: 6.93 seconds, Memory: 28.00MB

OK (5 tests, 6 assertions)


Code Coverage Report:    
  2016-09-02 12:35:00    

 Summary:                
  Classes:  0.00% (0/1)  
  Methods: 75.00% (3/4)  
  Lines:   90.91% (10/11)

\App\Uptobox::Uptobox
  Methods:  75.00% ( 3/ 4)   Lines:  90.91% ( 10/ 11)

到目前为止,我注意到的是,只要目标目录不包含任何子目录,phpunit就不会处理该目录中的所有测试文件,否则它会以静默方式失败。

您的目录后缀可能是错误的

这里:您试图将每个php文件作为测试来执行:

<testsuites>
    <testsuite name="Application Test Suite">
        <directory suffix=".php">./tests</directory>
    </testsuite>
</testsuites>
尝试:


/测试

你有一个拼写错误:
valaue
)。也许这就是原因。您是否检查了
/tests
中的循环符号链接?
<testsuites>
    <testsuite name="Application Test Suite">
        <directory suffix=".php">./tests</directory>
    </testsuite>
</testsuites>
find . -name "*_Test.php" -type f -exec phpunit {} \;
<testsuites>
    <testsuite name="Application Test Suite">
        <directory suffix="Test.php">./tests</directory>
    </testsuite>
</testsuites>