【发布时间】:2013-01-25 01:11:58
【问题描述】:
我有以下测试/文件夹:
测试/ ClassOne.test.php ClassTwo.test.php ClassThree.test.php我必须将以下 setUp() 和 tearDown() 方法复制到每个文件中:
我考虑编写一个单独的类,其中包含这些方法,require() 每个测试文件中的那个文件,并从 那个 类而不是 PHPUnit_Framework_Testcase 扩展。有没有更简单的解决方案?
我无法轻松访问phpunit.xml,因为我的编码框架的 CLI 工具(Laravel,artisan)处理了它的创建。因此,如果有不涉及该文件的解决方案会更好。
【问题讨论】:
-
编写一个基础测试类并从中扩展是最好的方法,这怎么不容易?
-
我不喜欢我必须在每个测试文件中写一个'require'语句。我想使用自动加载,但我的框架不允许这样做。所以看起来我不得不在所有测试文件中复制至少一行。
-
拥有一个基础测试类是很常见的做法。如果您想采用更简洁(但更难)的方式,您最终可以考虑使用组合。
-
你总是可以使用自动加载,我想不出任何方法来禁止它。您可以堆叠自动加载器,因此如果 Laravel 和 PHPUnit 的自动加载器不为您服务,并且您无法修改 PHPUnit 引导文件,您仍然可以在测试套件中添加自己的自动加载器。
-
Ocramius,你认为你可以提供一段与 laravel 兼容的代码来帮助我进行合成吗?具体来说,如果没有我在文件开头编写 some 类型的初始化(
Bundle::start('name')或其他东西,在文件的开头(这将启动自动加载器),Laravel 就不会启动。这不是与必须使用 require 语句有很大不同。我希望完全消除这种重复。
标签: phpunit