在ThinkPHP框架中,可以使用PHPUnit进行 单元测试 和 集成测试 。具体步骤如下:
在命令行中执行 composer require --dev phpunit/phpunit
命令安装PHPUnit。
在 tests
目录下创建测试用例文件,例如 UserTest.php
,并编写测试方法。测试方法应当使用 PHPUnit\Framework\TestCase
类,例如:
use PHPUnit\Framework\TestCase;
class UserTest extends TestCase
{
public function testGetUserName()
{
$user = new \app\model\User();
$user->name = 'Alice';
$this->assertEquals('Alice', $user->getUserName());
}
}
在命令行中进入项目根目录,执行 vendor/bin/phpunit
命令运行测试。测试结果将会输出到命令行中。
集成测试需要使用数据库等外部资源,可以使用 think-test
扩展来进行测试。具体步骤如下:
think-test
扩展:composer require --dev topthink/think-test
phpunit.xml
文件中配置数据库等外部资源的连接信息:<php>
<env name="DB_HOST" value="localhost"/>
<env name="DB_NAME" value="test_db"/>
<env name="DB_USER" value="root"/>
<env name="DB_PASS" value=""/>
</php>
think\App
类来创建应用实例,并使用 think\facade\Db
类来访问数据库:use PHPUnit\Framework\TestCase;
use think\App;
use think\facade\Db;
class UserTest extends TestCase
{
protected $app;
protected function setUp(): void
{
$this->app = new App();
$this->app->initialize();
}
public function testGetUser()
{
$user = Db::name('user')->where('name', 'Alice')->find();
$this->assertNotNull($user);
}
}
在命令行中执行 vendor/bin/phpunit --bootstrap vendor/autoload.php tests/
命令运行测试。测试结果将会输出到命令行中。