PHPUnit\Framework\TestCase 和 Tests\TestCase 有什么区别?
What is the difference between PHPUnit\Framework\TestCase and Tests\TestCase?
我注意到在示例测试中,内置了两个 类。
功能测试 => use Tests\TestCase;
单元测试 => PHPUnit\Framework\TestCase;
两者有什么区别?你在哪些情况下使用其中一种?
PHPUnit\Framework\TestCase
这是 PHPUnit 测试的标准开箱即用父级。它只有PHPUnit提供的功能。
当您想要不了解 Laravel 或脚手架的“真实”单元测试时,最好使用它。它们也快得多。
Tests\TestCase
这是多种测试(可以是单元、集成或功能)的父级 class,依赖于 Laravel 应用程序功能。这些场景可能包括:
- 使用 Eloquent 个工厂创建模型
- 使用 Facades 及其伪造品
- 使用全局助手的单元测试组件(例如
config()
)
- 使用数据库事务and/or 为每个测试重置
- 使用 Laravel
提供的任何其他增强功能和断言
PHPUnit\Framework\TestCase
是 Tests\TestCase
的父级,因此 PHPUnit 的所有标准功能也可用。
您可以同时使用! 我尽可能使用 PHPUnit 的 TestCase 进行单元测试,Laravel 用于集成和功能测试。
我注意到在示例测试中,内置了两个 类。
功能测试 => use Tests\TestCase;
单元测试 => PHPUnit\Framework\TestCase;
两者有什么区别?你在哪些情况下使用其中一种?
PHPUnit\Framework\TestCase
这是 PHPUnit 测试的标准开箱即用父级。它只有PHPUnit提供的功能。
当您想要不了解 Laravel 或脚手架的“真实”单元测试时,最好使用它。它们也快得多。
Tests\TestCase
这是多种测试(可以是单元、集成或功能)的父级 class,依赖于 Laravel 应用程序功能。这些场景可能包括:
- 使用 Eloquent 个工厂创建模型
- 使用 Facades 及其伪造品
- 使用全局助手的单元测试组件(例如
config()
) - 使用数据库事务and/or 为每个测试重置
- 使用 Laravel 提供的任何其他增强功能和断言
PHPUnit\Framework\TestCase
是 Tests\TestCase
的父级,因此 PHPUnit 的所有标准功能也可用。
您可以同时使用! 我尽可能使用 PHPUnit 的 TestCase 进行单元测试,Laravel 用于集成和功能测试。