4

一个“简单”的问题:如何使用 Arcanist 自动运行 PHPunit 测试?

根据文档,我应该首先加载一个自定义库。如此处所述我应该创建一个.arcconfig文件并加载适当的库。

所以:我在我的项目中创建了一个目录“arc_libs”,并在我用来arc liberate生成所需文件的目录“src”中。我的配置现在是:

{
  "project.name" : "arc_libs",
  "phabricator.uri" : "https://phabricator.xxx.xxx.net/",
  "unit.engine" : "PhpunitTestEngine",
  "load" : ["arc_libs/src"]
}

库确实被加载了,因为我可以运行arc unit

[matthijs@xx xxx]$ arc unit
No tests to run.

但正如您所见,没有要运行的测试。我们将测试保存在“project_root/tests”中,据我了解文档,我应该在“模块”中创建一个 __tests__ 目录(可能是我的 arc_libs 目录?)

但是我想运行我现有的 PHPunit 测试文件,而不是我需要创建的新测试。我尝试使用符号链接等,但我无法让它工作。奥术师没有检测到我的测试。

所以我的问题是:如何使用 arcanist 自动运行我现有的 PHPunit 测试?

(注意我们使用arc diff它应该arc unit自动运行)

4

2 回答 2

2
$ arc unit --help

  unit [options] [paths]
  unit [options] --rev [rev]
      Supports: git, svn, hg
      Run unit tests that cover specified paths. If no paths are specified,
      unit tests covering all modified files will be run.

默认情况下,arc lint 和 arc unit 旨在用作更改过程的一部分,因此默认情况下它仅作用于更改的文件。奇怪的是,您没有任何更改的文件。您可能想要指定一些路径,或者运行arc unit --everything以运行所有测试。

于 2014-09-26T20:17:13.507 回答
2

您链接的文档不会很有用 - 它针对想要测试他们的库的 Phabricator 开发人员。有一些面向用户的文档可用于自定义单元测试任务,但效果并不好。幸运的是,让 Arcanist 使用 include 运行项目的单元测试非常容易PhpunitTestEngine

  1. 在项目根目录中准备一个phpunit.xml文件。这应该是一个标准的 PHPUnit 配置文件。您可以通过运行来测试它phpunit -c phpunit.xml
  2. 为您添加一个phpunit_config选项.arcconfig

    {
      "phabricator.uri": "https://phabricator.xxx.xxx.net/",
      "unit.engine": "PhpunitTestEngine",
      "phpunit_config": "phpunit.xml"
    }
    
  3. 运行arc unit测试一下。

尽管用户文档很薄,但源代码PhpunitTestEngine有一些注释并且相当简洁。如果遇到问题,通读测试引擎代码可以帮助您找到问题。

于 2014-09-19T09:38:08.037 回答