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\TestCaseTests\TestCase 的父级,因此 PHPUnit 的所有标准功能也可用。

您可以同时使用! 我尽可能使用 PHPUnit 的 TestCase 进行单元测试,Laravel 用于集成和功能测试。