如何为PHP_Codesniffer标准创建PHP单元测试用例`

如何为PHP_Codesniffer标准创建PHP单元测试用例`,php,phpunit,codesniffer,Php,Phpunit,Codesniffer,我已经创建了自己的代码嗅探器规则标准。它们运行良好。现在我想使用PHP UnitTest测试代码嗅探器规则。PhpCodesniffer已经有了PHPUnit测试用例的框架 因此,我使用它扩展了他们的抽象单元测试和单元测试类 Standards/TestRules/Tests/Function/FunctionUnitTest.php以及要测试的脚本保存在Standards/TestRules/Tests/Function/FunctionUnitTest.inc中 但是,当我打算通过命令php

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

因此,我使用它扩展了他们的
抽象单元测试
和单元测试类
Standards/TestRules/Tests/Function/FunctionUnitTest.php
以及要测试的脚本保存在
Standards/TestRules/Tests/Function/FunctionUnitTest.inc

但是,当我打算通过命令
phpunitpear\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
。我已经授予了文件夹的完全权限,也验证了路径和文件位置,但它给出了相同的错误。我也在linux机器上测试过它,但它给出了相同的错误


这是我的代码问题还是codesniffer unittest framework问题?

我在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


您的文件是否在顶级
测试
代码嗅探器
目录中?请注意,您要扩展的抽象测试用例位于
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

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

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

我为海报重新格式化了问题,并且
inc
中没有空格。这是一条线的结尾,浏览器变成了一个空间。我怀疑这是由于选择了控制台中的文本造成的。@David我希望如此,但我想知道是什么导致了这个问题,因为这两个文件位于同一位置&
TestRules/Tests/Function/FunctionUnitTest.php
正在处理中,如果是这样的话,然后,它应该选择文件
TestRules/Tests/Function/FunctionUnitTest.inc
。谢谢大家的评论。实际文件位置是C:/Program Files/PHP/PEAR/PHP/CodeSniffer/Standards/TestRules/Tests/Function/FunctionUnitTest.inc。我还想知道为什么会出现这个问题,因为文件夹具有完全的读/写权限。@User810130为什么不使用
xdebug
并查看如何流动以及它试图添加
.inc
文件的位置/方式?请尝试
--verbose
开关并添加扩展输出。目录结构如下-Codesniffer--Standard--TestRules--Sniff/Function/FunctionSniff.php--Tests/Function/FunctionUnitTest.php/-FunctionUnitTest.inc-Tests--Standards/absarctsniffunitest.php/AllSniffs.php有目录结构的工作吗?我遵循了与PHP Codesniffer UnitTest相同的约定。有指针吗?如果您遵循CodeSniffer自己的测试所确定的模式,我希望它能工作。首先,我将打开试图包含您的文件的类,并查看它希望该文件位于何处。是时候卷起袖子,把手弄脏了。:)