当我尝试在IDE PhpStorm中运行PHPUnit测试时,我没什么问题。
我使用的是看起来像的作曲家文件:
{
"require": {
"phpunit/phpunit": "3.7.19"
}
}
现在,当我运行测试时,我会发现异常:
PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'
有什么问题?当我把pear安装版测试工作好的时候。
// 修改 样本测试类:
class ReaderTest extends PHPUnit_Framework_TestCase
{
/**
* @test
*/
public function shouldGetReadedValue ()
{
$this->assertTrue(true);
}
}
// 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
答案 0 :(得分:12)
我找到了解决这个问题的方法。
在目录中的编辑配置中,在此测试运行正常后,将路径设置为我的测试目录(/path/to/my/project/tests
)。
答案 1 :(得分:5)
使用作曲家时遇到同样的问题。
解决方案是将测试文件放在自己的目录中。这是我的工作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>
如果有人有同样的问题,希望它能解决.. :)
答案 2 :(得分:5)
这对我有用,感谢上面的Piotr的回答,但我在这里提供了一些更详细的细节:
使其工作的步骤(在PHPStorm 8.0.1中测试):
1)在 Preferences > PHP > PHPUnit
中,确保没有为默认配置文件或默认引导程序文件设置任何内容。
2)通过 Run > Edit Configurations >
小节中的 Command Line
进行自定义PHPUnit配置,并确保:
a)设置 Custom working directory:
/absolute/path/to/vendor
。
b)检查&#34;使用备用配置文件:&#34;并将其设置为 /absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist
然后,您可以通过指定类和文件来运行套件中的任何测试类,或者只需检查&#34;在配置文件中定义&#34;根据配置运行所有这些。
答案 3 :(得分:0)
在PHPUnit_Framework_TestSuite中,此代码exists in the constructor:
if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) {
throw new PHPUnit_Framework_Exception(
'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.'
);
}
我在您的示例中看到您正在展开PHPUnit_Framework_TestCase
,但错误表明您使用的PHPUnit_Extensions_RepeatedTest
扩展了PHPUnit_Extensions_TestDecorator
,最终扩展了PHPUnit_Framework_Assert
}
PHPUnit_Framework_Assert
|
--PHPUnit_Extensions_TestDecorator
|
--PHPUnit_Extensions_RepeatedTest
仔细检查您的测试,因为错误表明您正在尝试使用扩展PHPUnit_Extensions_RepeatedTest
的测试来运行TestSuite。您是否尝试使用Test Decorators扩展PHUnit?
http://docs.tadiavo.com/phpunit/www.phpunit.de/pocket_guide/3.1/en/extending-phpunit.html
这是我目前可以提供的所有建议,而不会看到您的实际测试以及您如何运行它们。