我尝试从PhpStorm运行PHPUnit时出错

Pio*_*ski 18 php testing phpunit phpstorm composer-php

当我尝试在IDE PhpStorm中运行PHPUnit测试时,我没有什么问题.

我使用的composer文件看起来像:

{
    "require": {
        "phpunit/phpunit": "3.7.19"
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行测试时,我会发现异常: PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

怎么了?当我加入梨装版本测试工作正常.

// 编辑 示例测试类:

 class ReaderTest extends PHPUnit_Framework_TestCase
    {
        /**
         * @test
         */
        public function shouldGetReadedValue ()
        {
            $this->assertTrue(true);
        }
    }
Run Code Online (Sandbox Code Playgroud)

// EDIT2 跟踪:

/usr/bin/php /tmp/ide-phpunit.php --no-configuration /path/to/my/project
Testing started at 14:53 ...
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.' in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:183
Stack trace:
#0 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(315): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass))
#1 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(389): PHPUnit_Framework_TestSuite->addTestSuite(Object(ReflectionClass))
#2 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(416): PHPUnit_Framework_TestSuite->addTestFile('/var/www/php-sh...')
#3 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Runner/BaseTestRunner.php(96): PHPUnit_Framework_TestSuite->addTestFiles(Array)
#4 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php(150): PHPUnit_Runner_BaseTestRunner->getTest('/var/www/php-sh...', '', A in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php on line 183

Process finished with exit code 255
Run Code Online (Sandbox Code Playgroud)

Pio*_*ski 12

我找到了解决这个问题的方法.

在目录中的编辑配置中/path/to/my/project/tests,在此测试正常运行后,将路径设置为我的测试目录().

  • 重要的是要注意路径必须通过以下方式设置:`运行>编辑配置> PhpUnit`在那里,可以设置`目录`.你不(!)在PhpStorm的`File> Settings`下找到它. (3认同)

rah*_*mat 5

使用composer时我遇到同样的问题.

解决方案是将您的测试文件放在自己的目录中.这是我的工作phpunit,我把我所有的测试放在test目录中.

<phpunit bootstrap="vendor/autoload.php" 
    colors="true"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    stopOnFailure="true">
    <testsuites>
        <testsuite name="Test Suite">
            <directory>test</directory>
        </testsuite>
    </testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

希望它解决,如果有人有同样的问题.. :)


Com*_*ast 5

这对我来说很有用,感谢Piotr上面给出的答案,但我在这里提供了一些更详细的细节:我必须做的所有步骤:

使其工作的步骤(在PHPStorm 8.0.1中测试):

1) Preferences > PHP > PHPUnit 确保没有为默认配置文件或默认引导程序文件设置任何内容.

2)创建自定义配置的PHPUnit通过 Run > Edit Configurations > Command Line 小节,并确保:

a)设定 Custom working directory: /absolute/path/to/vendor.

b)选中"使用备用配置文件:"并将其设置为 /absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist

然后,您可以通过指定类和文件来运行套件中的任何测试类,或者只需选中"在配置文件中定义"以根据配置运行所有测试类.