PHPUnit为Netbeans自动完成

时间:2017-03-06 15:03:42

标签: netbeans phpunit

我想在我的项目中使用PHPUnit自动完成功能。出于某些不明原因,它在家工作,但不在工作场所。

enter image description here

如您所见,我已将以下目录添加到包含路径:

alert(member_id)

在此之前我玩了一些更多的目录。我还尝试将其添加到D:\phpunit D:\phpunit\vendor\phpunit D:\phpunit\vendor\phpunit\phpunit\src\Framework\Assert 但没有成功。

当然测试是有效的,路径中的Global PHP Inlcude path。我无法弄清楚为什么autocompletiotion不起作用。

2 个答案:

答案 0 :(得分:3)

编辑:

在阅读问题时,我假设您D:\phpunit\的路径是针对phpunit.phar或测试文件或类似的那样。但最后一行包含让我觉得你克隆了phpunit的来源。这种方式肯定应该有效,因为源在包含路径上。但我想知道为什么包括#2和#3?他们已经处于第一条道路上了。也许NB在某些方面与所有这些多个嵌套的东西混淆了?我个人使用下面描述的方式几乎所有版本的PHPUnit从Linux和Windows不同版本的4.8开始,使用Netbeans 8.1和8.2。 Netbeans的自动完成总是对数据库测试用例(通常是来自基类的第4个孩子)起作用。与NB相比,Komodo IDE从未设法选择那些。

原始回答:

PHPUnit通过.phar存档定期分发,该存档也是可执行的。所有PHPUnit文件都打包在里面。据我所知,Netbeans不支持.phar等档案中的文件查找。所以如果你想启用它,我建议你做

// assuming that phpunit.phar is in the current directory
$phar = new Phar('phpunit.phar');
$phar->extractTo('PHPUnit/');

这可以通过创建php脚本并在交互模式下直接在控制台中执行来完成。

然后在Netbeans中,您应该转到菜单Tools - > Options - > PHP标签 - > General标签,并为您刚刚提取文件的文件夹添加全局包含路径(如/home/blah/blah/blah/PHPUnit或其他任何内容)。

上述步骤不会影响phpunit的实际运行方式,只是为了让Netbeans能够自动完成查找。

关于你提到的第二件事 - 类命名和命名空间:

  

PHPUnit的代码单元现在是命名空间。例如,   PHPUnit_Framework_TestCase现在是PHPUnit \ Framework \ TestCase

(取自原始来源https://github.com/sebastianbergmann/phpunit/wiki/Release-Announcement-for-PHPUnit-6.0.0

最后一个:据我所知,phpunit骨架生成器很久以前就被抛弃了,所以重新考虑它的使用可能会有用。

答案 1 :(得分:0)

通常当我找到问题的答案时,如果答案是如此明显或只是一个错字,我会删除该问题,但我现在不这样做。这样做的原因是解决方案不那么明显,而且对其他人来说可能很方便。

我正在使用Netbeans 8.2

当您使用netbeans并想要设置PHPUnit时,您可以设置:

Options -> PHP -> Framework & Tools -> PHPUnit

其中一个输入字段叫做:Skeleton Generator脚本。

此脚本可帮助您在从netbeans创建新测试时创建一个sekeleton。

您需要添加到Include Path的唯一一个是PHPUnit目录的路径,对我而言:D:\phpunit

测试文件的开头如下:

<?php

/**
 * Generated by PHPUnit_SkeletonGenerator on 2017-03-06 at 15:56:58.
 */
 class AbcTest extends PHPUnit_Framework_TestCase {

可悲的是,你不能改变它,因为它在phpunit-skelgen-2.0.1.phar中,如果你做了一些改变,它会起作用。有一个完整性检查会阻止您更改文件的内容。

所以,问题在于没有这样的类:

PHPUnit_Framework_TestCase

我认为有一种自动加载器方法可以将其转换为\PHPUnit\Framework\TestCase

解决方案是将extends之后的单词更改为:

class AbcTest extends PHPUnit\Framework\TestCase

use PHPUnit\Framework\TestCase;
class AbcTest extends TestCase {

在此之后,当您开始输入$this->时,您将获得自动填充列表。