构建自己的go-gin-api脚手架(二)

在前文中我们已经成功的使用 Gin 框架搭建了一个简易的 API 服务,但是在一个项目中,所有的业务逻辑都写在 main.go 一个文件中显然是不合理的。所以接下来我们会对其进行重构,在整个搭建 go-gin-api 脚手架的过程中,会经常对其重构。 每当我要进行重构的时候,第一个步骤永远相同:我得确保即将修改的代码拥有一组可靠的测试。这些测试必不可少,因为尽管遵循重构手法可以使我避免绝大多数引入 bug 的情形,但我毕竟是人,毕竟有可能犯错。程序越大,我的修改不小心破坏其他代码的可能性就越大——在数字时代,软件的名字就是脆弱。 —— 《重构:改善既有代码的设计》 所以在此之前我们需要编写一套可靠的单元测试,来确保代码重构之后还能良好的运行。 Go 单元测试框架 testing testing 是 Go 标准库中提供的自动化测试支持,通过 go test 命令,能够自动执行如下形式的任何函数: func TestXxx(*testing.T) 注意:Xxx 可以是任何字母数字字符串,但是第一个字母不能是小写字母。 在这些函数中,使用 Error、Fail 或相关方法来发出失败信号。 要编写一个新的测试套件,需要创建一个名称以 _test.go 结尾的文件,该文件包含 TestXxx 函数,如上所述。 将该文件放在与被测试文件相同的包中。该文件将被排除在正常的程序包之外,但在运行 go test 命令时将被包含。 有关详细信息,请运行 go help test 和 go help testflag 了解。 标准库的 testing 实现比较简单,并不支持断言,需要写 if 判断。所以不考虑使用。 Testify 地址:https://github.com/stretchr/testify Testify 是基于 testing 编写的,所以测试文件与执行方式与其完全相同,并且支持断言方法。 编写测试 首先创建一个 main_test.go 的文件,写入以下代码并执行 go mod tidy更新依赖。 main_test.go package main import ( "github....

2022-01-11 · 3 分钟

在PhpStorm中使用PHPUnit进行单元测试

PHPUnit 是什么 PHPUnit 是一个面向 PHP 程序员的测试框架,这是一个 xUnit 的体系结构的单元测试框架。 PHPUnit 的官网地址为:https://phpunit.de/,中文镜像网站:http://www.phpunit.cn/。 安装 PHPUnit PHPUnit 有两种安装方式,一种是下载 PHAR 发行包进行全局安装,一种是使用 composer 来为某一个项目安装。 推荐使用 composer 安装,本文也是使用这种安装方式。 首先以上一篇文章创建的空的 composer 包为基础,执行以下命令即可。 root@d63b4f236f0c:/home# composer require --dev phpunit/phpunit 编写 PHPUnit 测试 首先在项目下面新建一个tests文件夹,用来存放单元测试文件。 然后编辑 composer.json 文件为 tests 文件夹增加一个命名空间"Chance\\Log\\Test\\": "tests/"并执行composer dump-autoload更新 composer 的命名空间与文件夹映射关系。 在 tests 目录创建 StackTest.php 文件,使用官网的一个例子来测试。 StackTest.php <?php namespace Chance\Log\Test; use PHPUnit\Framework\TestCase; class StackTest extends TestCase { public function testPushAndPop() { $stack = []; // 断言方法 assertEquals 判断两值是否相等 $this->assertEquals(0, count($stack)); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals('foo', array_pop($stack)); $this->assertEquals(0, count($stack)); } } 命令行执行单元测试 运行....

2021-12-19 · 1 分钟