尝试使用配置XML文件运行PHPUnit会导致异常

尝试使用配置XML文件运行PHPUnit会导致异常,phpunit,integration,phpstorm,Phpunit,Integration,Phpstorm,我正在尝试(有一段时间,在PHP聊天室的同事们的帮助下)成功地将PHPUnit与PhpStorm集成 我已经设置了phpunit.xml文件,如下所示: 习俗/* 并成功地将PHP storm配置为从该文件读取 问题是,在运行测试时,我在PhpStorm的控制台中遇到以下错误: D:\Websites\php\php.exe C:\fakepath\ide-phpunit.php --bootstrap D:\Websites\htdocs\lamed\tests\boostrap.php

我正在尝试(有一段时间,在PHP聊天室的同事们的帮助下)成功地将PHPUnit与PhpStorm集成

我已经设置了
phpunit.xml
文件,如下所示:


习俗/*
并成功地将PHP storm配置为从该文件读取

问题是,在运行测试时,我在PhpStorm的控制台中遇到以下错误:

D:\Websites\php\php.exe C:\fakepath\ide-phpunit.php --bootstrap D:\Websites\htdocs\lamed\tests\boostrap.php --configuration D:\Websites\htdocs\lamed\tests\phpunit.xml
Testing started at 23:51 ...

Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "Lamed Test Suite.php" nor "Lamed Test Suite.php" could be opened.' in D:\Websites\php\pear\PHPUnit\Util\Skeleton\Test.php:100
Stack trace:
#0 D:\Websites\php\pear\PHPUnit\TextUI\Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('Lamed Test Suit...', '')
#1 C:\Users\Dor\AppData\Local\Temp\ide-phpunit.php(95): PHPUnit_TextUI_Command->run(Array, true)
#2 C:\Users\Dor\AppData\Local\Temp\ide-phpunit.php(434): IDE_PHPUnit_TextUI_Command::main()
#3 {main}
  thrown in D:\Websites\php\pear\PHPUnit\Util\Skeleton\Test.php on line 100

Process finished with exit code 255
它显然是从
testsuite
元素的
name=
属性中读取的。问题是,为什么?

更新
  • 我正在运行Windows Seven x64 SP1和PHPStorm 4.0.3。PHPUnit版本是3.6.12
  • 在CLI中键入
    phpunit-c“D:\Websites\htdocs\lamed\tests\phpunit.xml”
    实际上会给出相同的结果
  • 我的
    Custom
    目录与
    phpunit.xml
    文件位于同一文件夹中

我很困惑。非常感谢您的帮助。

元素中删除
/*
。此元素的文本内容应指向目录,而不是文件glob

<directory>Custom</directory>

你所经历的是一种退路。看起来您的测试套件是空的(并且没有其他非空的测试套件)

在这种情况下,PHPUnit也会尝试打开一些合适的东西,但这不起作用。然后你会看到一个错误

  • 如果您只有一个空的testsuite,您将看到异常,其中包含testsuite的名称,并添加了php以供尝试

    Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "Empty-Testuite.php" nor "Empty-Testuite.php" could be opened.'
    
  • 如果您有多个空的testsuite,并且没有工作的testsuite,那么您将只看到和错误关于php,没有添加任何名称

    Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither ".php" nor ".php" could be opened.'
    
  • 如果您至少有一个工作测试套件,但有一个或多个空测试套件,您将看到每个空测试套件的简短报告,但没有错误:

    Empty test suite.
    
当我写到这是一种回退时,它绝不意味着这种行为是PHPUnit的意图。在您的案例中看到错误是可以的,因为在开始测试之前,您至少需要运行一个测试。在开始配置testsuites之前,同样的

修复测试丢失和错误消失的根本问题

另一个答案中提到的通配符
*
——即使我确信没有通配符是正确的——在我看来,通配符对您的问题没有任何影响


此答案中的信息基于

  • 塞巴斯蒂安·伯格曼的PHPUnit 3.6.7
  • PHP.net提供的PHP 5.4.5

如果同样的问题将directory的值改为绝对路径而不是相对路径,那么它就起作用了。 比如我变了 测验 进入 C:\eclipse\Workspace\testweb

遗憾的是,我必须阅读大量非信息,文档中没有提到这一点,也没有文档说明如何使用配置xml文件启动命令行界面

phpunit-c tests/all.xml

php测试文件必须以test结尾,就像myTest.php一样,即使在添加文件元素时也是如此 C:\eclipse\Workspace\testweb\tests\classes\something.php 不起作用 C:\eclipse\Workspace\testweb\tests\classes\somethingtest.php
会起作用的

我会在重置大脑后再看这个。请注意,我是在Linux上开发的,我刚刚意识到您是在Windows上开发的,不过这不会有什么区别。@Lusitanian请再想一想。我无法通过Windows 7上的配置文件运行任何phpunit测试。“我也还没弄明白这一点。”莫里森很有趣。我没有Windows box…否则我会测试。你不需要配置它。PHPStorm为您处理它,如果您需要设置自定义XML或引导文件,则有一个选项:@hakre:显示为so!运行
phpunit-c“D:\Websites\htdocs\lamed\tests\phpunit.xml”
时,我收到了相同的消息,但失败了。抛出相同的异常。我看到了文档,甚至是它们的示例XML,当copy/pasted给我同样的错误时(只是说
Object\u-Freezer
Object/Freezer
)。@Truth注意路径是相对于XML文件位置的。Bzt正如David所述,问题来自phpunit未找到任何测试:)phpunit.xml文件与自定义目录同级,我的测试在自定义目录中。文件名没有以
test
结尾,一旦我这样做,它就解决了问题。谢谢:)链接已断开,以下链接是否与您在2012年链接的页面相对应?但我在自定义文件夹中有一个testcase,当我直接从CLI运行它时,它就可以工作了。它应该被命名为任何特定的名称吗?是的,从,您需要将文件从
lamed.php
重命名为
lamedTest.php
,否则PHPUnit将无法识别它,并且testsuite仍然为空(我回答中列表中的第一个案例)。
Empty test suite.