Netbeans的PHPUnit自动完成

Netbeans的PHPUnit自动完成,netbeans,phpunit,Netbeans,Phpunit,我想在我的项目中使用PHPUnit自动完成。由于一些未知的原因,它是在家工作,而不是在工作场所 如您所见,我已将以下目录添加到包含路径: D:\phpunit D:\phpunit\vendor\phpunit D:\phpunit\vendor\phpunit\phpunit\src\Framework\Assert 在此之前,我玩了一些更多的目录。我还尝试将其添加到全局PHP Inlcude路径中,但没有成功 当然,测试是有效的,路径中的D:\phpunit\。我不明白为什么自动完成不起

我想在我的项目中使用PHPUnit自动完成。由于一些未知的原因,它是在家工作,而不是在工作场所

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

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


当然,测试是有效的,路径中的
D:\phpunit\
。我不明白为什么自动完成不起作用。

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

我正在使用Netbeans 8.2

当您使用netbeans并希望设置PHPUnit时,可以设置:

Options -> PHP -> Framework & Tools -> PHPUnit
其中一个输入字段名为:骨架生成器脚本

当您从netbeans创建新测试时,此脚本帮助您创建sekeleton

您唯一需要添加到
包含路径
的是PHPUnit目录的路径,对我来说是:
D:\PHPUnit

测试文件的开头如下所示:

<?php

/**
 * Generated by PHPUnit_SkeletonGenerator on 2017-03-06 at 15:56:58.
 */
 class AbcTest extends PHPUnit_Framework_TestCase {
PHPUnit_Framework_TestCase
我认为有一种自动加载方法可以将其转换为
\PHPUnit\Framework\TestCase

解决方案是将
后的单词改为以下内容:

class AbcTest extends PHPUnit\Framework\TestCase


之后,当您开始键入
$this->
时,您将获得自动完成列表。

编辑:

在阅读问题时,我假设您的
D:\phpunit\
路径是针对phpunit.phar或测试文件或类似的smth。但是最后一行inlcudes让我觉得你已经克隆了phpunit的来源。这种方式当然应该有效,因为源位于include路径上。但我想知道为什么会有2和3?他们已经在第一条道路上了。也许NB对这些多重嵌套的东西有些困惑?就我个人而言,我使用了下面描述的方法,在不同版本的Linux和Windows上,使用Netbeans 8.1和8.2,从4.8开始的几乎所有PHPUnit版本。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
tab->
General
选项卡,并向刚刚提取文件的文件夹添加一个全局包含路径(smth,如
/home/blah/blah/blah/PHPUnit
或其他)

上面的步骤并不影响phpunit的实际运行方式,它只是让Netbeans能够进行自动完成的查找

关于您提到的第二件事——类命名和名称空间:

PHPUnit的代码单元现在已命名。例如, PHPUnit\u Framework\u TestCase现在是PHPUnit\Framework\TestCase

(摘自原始资料)


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

那些其他目录只是尝试一下,我在windows上看到了有趣的东西,即使我知道include路径的含义。问题是不存在PHPUnit_框架_测试用例。请阅读我的答案。无论如何,我是通过composer下载的,骨架来自phpunit.de.Fwiw没有理由在Komodo IDE中不起作用,但是根据您的设置,您可能需要进行一些额外的配置(设置导入目录)。这对我来说不起作用。解包phar并指向include路径中的解包文件夹效果更好。您还可以使用骨架脚本生成的
PHPUnit\u Framework\u TestCase
// assuming that phpunit.phar is in the current directory
$phar = new Phar('phpunit.phar');
$phar->extractTo('PHPUnit/');