【问题标题】:How to create PHP-UnitTest case for PHP_Codesniffer standards?`如何为 PHP_Codesniffer 标准创建 PHP 单元测试用例?
【发布时间】:2011-07-04 20:24:10
【问题描述】:

我创建了自己的代码嗅探器规则标准。它们运行良好。现在我想使用 PHP UnitTest 测试代码嗅探器规则。 PhpCodesniffer 已经有了他们的 PHPUnit 测试用例框架。

因此,我使用它扩展了他们的AbstractSniffUnitTest 和位置的单元测试类 Standards/TestRules/Tests/Function/FunctionUnitTest.php 和要测试的脚本保存在 Standards/TestRules/Tests/Function/FunctionUnitTest.inc 中。

但是当我要通过命令phpunit PEAR\PHP\tests\AllTests.php 运行脚本时,它会出现以下错误。

PHPUnit 3.5.14 by Sebastian Bergmann.

......................................F

Time: 6 seconds, Memory: 10.00Mb

There was 1 failure:

1) TestRules_Tests_Function_FunctionUnitTest::getErrorList
An unexpected exception has been caught: Source file C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc does not exist

C:\Program Files\PHP\PEAR\PHP\tests\Standards\AbstractSniffUnitTest.php:138
C:\Program Files\PHP\PEAR\PHP\tests\TestSuite.php:48

FAILURES!
Tests: 39, Assertions: 146, Failures: 1.

Warning: Deprecated PHPUnit features are being used 2 times!
Use --verbose for more information.

它给出了错误文件FunctionUnitTest.inc not found at given location。我已授予文件夹的完全权限,还验证了路径和文件位置,但它给出了同样的错误。我也在linux机器上测试过,但它给出了同样的错误。

是我的代码问题还是代码嗅探器单元测试框架问题?

【问题讨论】:

  • 请尝试--verbose 开关并添加扩展输出。

标签: php phpunit codesniffer


【解决方案1】:

您的文件是否在顶级 testsCodeSniffer 目录中?请注意,您要扩展的抽象测试用例位于 tests

C:\Program Files\PHP\PEAR\PHP\tests\Standards\AbstractSniffUnitTest.php

但正在尝试包含来自CodeSniffer 的文件:

C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc

尝试将您的两个文件移动到另一个目录。

【讨论】:

  • 目录结构如下 -Codesniffer --Standard ---TestRules ----Sniff/Function/FunctionSniff.php ----Tests/Function/FunctionUnitTest.php /-FunctionUnitTest.inc -测试 --Standards /AbstarctSniffUnitTest.php /AllSniffs.php 是否有任何目录结构磨损?我遵循与 PHP-Codesniffer UnitTest 相同的约定。任何指针?
  • 如果您遵循 CodeSniffer 自己的测试制定的模式,我希望它能够工作。我将首先打开试图包含您的文件的类,然后查看它期望文件的位置。是时候卷起袖子弄脏手了。 :)
【解决方案2】:

我在 i i nc 附近看到了一个空格 - 确保这是错误的错字并更正它,它应该可以工作。除此之外我没有发现任何问题。

变化:

C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.i nc

C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc

【讨论】:

  • 我重新格式化了海报的问题,inc 中没有空格。浏览器变成空格是行尾。我怀疑这是由于在控制台中选择文本引起的。
  • @David 我希望如此,但我想知道是什么导致了这个问题,因为这两个文件都在同一个位置,如果是这样的话,TestRules/Tests/Function/FunctionUnitTest.php 正在被处理,那么它应该选择-up 文件TestRules/Tests/Function/FunctionUnitTest.inc.
  • 感谢大家的cmets。实际文件位置是 C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc 我也想知道为什么会出现此问题,因为文件夹具有完整的读/写权限。
  • @User810130 你为什么不使用xdebug 看看流程是如何进行的以及它在哪里/如何尝试添加.inc 文件?
【解决方案3】:

它似乎在 Windows 上存在路径问题。我在 Linux 上测试了测试用例,效果很好。当我检查实际代码时,似乎存在从测试用例文件到嗅探文件的文件映射。但是在窗口上,文件被映射后,文件路径包含前向和后向斜杠的混合。但代码嗅探器不允许这样做。因此,它返回“找不到文件错误”。测试用例在 Linux 上运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多