我们已经在我们的代码库上实现了一些 PHPUnit 测试。然而,向前推进,为了最大限度地减少运行测试所需的时间,我想将我们的测试分为两组或级别:
- 非常低级的测试,不会访问测试数据库(单元测试)
- 更高级别的测试并与测试数据库交互(有时称为组件或集成测试)
这将允许我们在处理基本功能时只运行 1 级测试,而在处理更高级别的功能时或在提交到主线/构建之前运行 1 级和 2 级测试。
我将如何使用 PHPUnit 完成此任务?
最佳答案
@Schleis 的回答完全正确,非常有用。唯一的问题(我承认我没有包括在我的问题中)是我希望能够在我们的测试文件中分散单元和集成测试——我想避免有两个测试文件——一个文件用于单元测试用于 SomeClass,以及用于功能测试的单独文件,也用于 SomeClass。
我发现启用此功能的 PHPUnit 命令行选项是 groups :
--组
仅运行来自指定组的测试。可以使用@group 注释将测试标记为属于一个组。
要使用这种方法,您只需在测试之前将 @group
注释添加到多行注释中:
class SomeClassTest extends PHPUnit_Framework_TestCase {
/**
* @group Unit
*/
public function testSomeUnitFunctionality() {
$this->assertEquals(xyz(' .a1#2 3f4!', true), ' 12 34');
}
/**
* @group Integration
*/
public function testSomeIntegrationFunctionality() {
$this->assertEquals(xyz(' .a1#2 3f4!', true), ' 12 34');
}
}
这允许我执行以下操作:
phpunit --group Unit
(只是单元测试)phpunit --group Integration
(只是集成测试)phpunit
(所有测试)
关于php - PHPUnit 中的测试级别/组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180186/