go mod 与单元测试
go mod
为解决go模块间的相互引用,可以将go mod理解成j2ee中的pom文件。
创建mod
默认模块名
go mod init
指定模块名
go mod init <model-name>
引入其他模块
比如说需要引入 gin 模块。
- 首先需要进入模块所在目录,运行命令:
go get -u github.com/gin-gonic/gin
- 查看
mod文件
可以看到会将相关的依赖拉取下来,这样就能在自己的模块中使用这些包了。
module org.golearn.basic
go 1.14
require (
github.com/gin-gonic/gin v1.6.3 // indirect
github.com/go-playground/validator/v10 v10.3.0 // indirect
github.com/golang/protobuf v1.4.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 // indirect
google.golang.org/protobuf v1.24.0 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
)
go 单元测试
创建源文件和测试文件
├── test
│ ├── calc.go
│ └── calc_test.go
calc.go
package main
func Add(a, b int) int{
return a + b
}
func Sub(a, b int) int {
return a - b
}
func Mul(a, b int) int {
return a * b
}
calc_test.go
package main
import "testing"
func TestAdd(t *testing.T) {
t.Helper()
if ans := Add(1, 2); ans != 3 {
t.Errorf("1 + 2 expected be 3, but %d got", ans)
}
}
func TestMul(t *testing.T) {
//if ans := Mul(10, 20); ans != 100 {
// t.Errorf("10 * 20 expected be 600, but %d got", ans)
//}
// 子测试
// 正数
t.Run("正数相乘结果", func(t *testing.T) {
if ans := Mul(2, 3); ans != 6{
t.Errorf("10 * 20 expected be 6, but %d got", ans)
}
})
// 子测试-负数
t.Run("负数相乘结果", func(t *testing.T) {
if ans := Mul(-20, 3); ans != -60 {
t.Errorf("10 * 20 expected be -60, but %d got", ans)
}
})
}
func TestSub(t *testing.T) {
if ans := Sub(10, 1); ans != 9 {
t.Errorf("10 - 1 expected be 9, but %d got ", ans)
}
}
// 多个子测试场景
func TestMul2(t *testing.T) {
mulCases := []struct{
Name string
Num1, Num2, Expect int
}{
{"pos", 1, 2, 2},
{"neg", 1, -2, -2},
{"zero", 0, -2, 10},
}
for _, r := range mulCases {
t.Run(r.Name, func(t *testing.T) {
t.Helper()
if ans := Mul(r.Num1, r.Num2); ans != r.Expect {
t.Fatalf("%d * %d expected %d, but %d got",
r.Num1, r.Num2, r.Expect, ans)
}
})
}
}
//
/*
测试用例
1. 在相同的包路径中创建 xxx_test.go文件
2. 编写测试用例
3. 运行测试用例,查看测试用例中所有函数的运行结果 go test -v
*/
运行测试用例
go test -v
=== RUN TestAdd
--- PASS: TestAdd (0.00s)
=== RUN TestMul
=== RUN TestMul/正数相乘结果
=== RUN TestMul/负数相乘结果
--- PASS: TestMul (0.00s)
--- PASS: TestMul/正数相乘结果 (0.00s)
--- PASS: TestMul/负数相乘结果 (0.00s)
=== RUN TestSub
--- PASS: TestSub (0.00s)
=== RUN TestMul2
=== RUN TestMul2/pos
=== RUN TestMul2/neg
=== RUN TestMul2/zero
TestMul2/zero: calc_test.go:55: 0 * -2 expected 10, but 0 got
--- FAIL: TestMul2 (0.00s)
--- PASS: TestMul2/pos (0.00s)
--- PASS: TestMul2/neg (0.00s)
--- FAIL: TestMul2/zero (0.00s)
FAIL
exit status 1
FAIL org.golearn.basic/test 0.005s
go mod 与单元测试的更多相关文章
- [易学易懂系列|rustlang语言|零基础|快速入门|(15)|Unit Testing单元测试]
[易学易懂系列|rustlang语言|零基础|快速入门|(15)] 实用知识 Unit Testing单元测试 我们知道,在现代软件开发的过程中,单元测试对软件的质量极及重要. 今天我们来看看Rust ...
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
转 单元测试及框架简介 --junit.jmock.mockito.powermock的简单使用 2013年08月28日 14:33:06 luvinahlc 阅读数:6413 标签: 测试工具单元测 ...
- 为代码编写稳定的单元测试 [Go]
为代码编写稳定的单元测试 本文档配套代码仓库地址: https://github.com/liweiforeveryoung/curd_demo 配合 git checkout 出指定 commit ...
- golang单元测试一(简单函数测试)
0.1.索引 https://blog.waterflow.link/articles/1663688140724 1.简介 单元测试是测试代码.组件和模块的单元函数.单元测试的目的是清除代码中的错误 ...
- Intellij idea添加单元测试工具
1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...
- Python的单元测试(二)
title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...
- Python的单元测试(一)
title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...
- javascript单元测试框架mochajs详解
关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...
- 使用NUnit为游戏项目编写高质量单元测试的思考
0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...
随机推荐
- Js运算符和逻辑结构
1.运算符 (1)赋值运算符 = += -= *= /= %= (2)三目运算符 一目 一个运算符连接一个数据 -- ++ ! 二目 一个运算符连接两个数据 + - * / ...
- DRF版本组件
1.DRF版本组件配置类局部使用 局部配置: 方式一:直接配置versioning_class=QueryParameterVersioning 方式二:直接配置versioning_class=UR ...
- 第一篇:百度AI注册使用
百度AI (https://ai.baidu.com/)点击右上角<控制台>进行登录 内容审核: 操作文档:
- PHP 连接数据库基础操作
<?phpheader('Content-type:text/html;charset=utf-8');//1建立 或者 关闭mysql服务器 @符号用于屏蔽错误信息$link=@mysql ...
- 容器技术之Docker数据卷
前一篇随笔中我们了解了docker的网络相关说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12952616.html:今天我们来聊一聊docker的数据管 ...
- 哥德巴赫猜想 Java实现
1.接口实现 package goldbach; /** * 输入一个大于6的偶数,请输出这个偶数能被分解为哪两个质数的和.如:10=3+7 12=5+7 * 此为按接口实现类完成 * * @auth ...
- 粒子群优化算法对BP神经网络优化 Matlab实现
1.粒子群优化算法 粒子群算法(particle swarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作 ...
- Spring MVC介绍和第一个例子
1.Spring mvc概述 spring mvc是spring提供给web应用框架设计,实际上MVC框架是一个设计理念.它不仅存在java世界中而且广泛在于各类语言和开发中,包括web的前端应用.对 ...
- C++软件开发面试题总结
面试题有难有易,不能因为容易,我们就轻视,更不能因为难,我们就放弃.我们面对高薪就业的态度永远不变,那就是坚持.坚持.再坚持.出现问题,找原因:遇到困难,想办法.我们一直坚信只有在坚持中才能看到希望, ...
- Java IO(四) InputStream 和 OutputStream
Java IO(四) InputStream 和 OutputStream 一.介绍 InputStream 和 OutputStream 是字节流的超类(父类),都是抽象类,都是通过实例化它们的子类 ...