使用Arcanist(Phabricator)自动运行PHPUnit测试

4
一个“简单”的问题:我如何使用Arcanist自动运行PHPunit测试?
根据文档,首先应该加载一个自定义库。正如这里所述,我应该创建一个.arcconfig文件并加载适当的库。
所以,我在我的项目中创建了一个名为“arc_libs”的目录,并在“src”目录中使用arc liberate生成所需的文件。我的配置现在是:
{
  "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.

但是你会发现没有测试可供运行。我们将我们的测试放在“项目根目录/测试”中,就我所了解的文档而言,我应该在“模块”(可能是我的arc_libs目录?)中创建一个__tests__文件夹。

然而,我想运行我现有的PHPunit测试文件,而不是需要创建的新测试。我尝试使用符号链接等方式,但无法使其正常工作。Arcanist无法检测到我的测试。

所以我的问题是:如何自动运行我的现有PHPunit测试与Arcanist一起?

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

2个回答

2
你提供的文档并不是很有用 - 它是针对想要测试他们的库的 Phabricator 开发者的。这里有一些关于自定义单元测试任务的用户文档, 但它并不是很好。幸运的是,使用包含的 PhpunitTestEngine 很容易让 Arcanist 运行你项目的单元测试:
  1. Prepare a phpunit.xml file in your project root. This should be a standard PHPUnit configuration file. You can test this by running phpunit -c phpunit.xml.
  2. Add a phpunit_config option to your .arcconfig:

    {
      "phabricator.uri": "https://phabricator.xxx.xxx.net/",
      "unit.engine": "PhpunitTestEngine",
      "phpunit_config": "phpunit.xml"
    }
    
  3. Run arc unit to test it out.
尽管用户文档很少,但PhpunitTestEngine 的源代码中有一些注释并且比较简洁。如果您遇到问题,阅读测试引擎代码可以帮助您追踪问题。

感谢您的回复。我们已经使用了单独的phpunit.xml文件,我按照您指示更改了配置,但不幸的是,arc仍然认为没有测试需要运行。我很乐意发布我们的phpunit xml文件,但我认为这并不相关,只需运行phpunit就可以完美运行。我将查看源代码,看看是否有任何可以使用的内容。 - Matthijs
仍然没有运气用这个选项,如果有人能推荐一些东西,将不胜感激! - Matthijs

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 来运行所有测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接