際際滷

際際滷Share a Scribd company logo
丐亠于舒仆亠  Go
亳于从仂 仆亞亠仍仂于
25-亳 亊仆舒亳 2018
仂亶 仄 舒亰 ?
亳于从仂 仆亞亠仍仂于
 DevOps @ SiteGround
 ExAdmin @ SiteGround
 Go 仗仂亞舒仄亳 仂 1 亞仂亟亳仆舒
 仆舒亠 Perl 仗仂亞舒仄亳
Unit testing
舒仂 亠于舒仄亠 ?
 亳亞磦舒 从舒亠于仂 仆舒 从仂亟舒
 舒亰于亳于舒 从仂亟舒 仆舒 仄舒仍从亳 仗舒亠舒
 亰仄仂亢仆仂 亰舒 仗仂亞舒仄亳舒仆亠 仂仍舒亶仆
 亠仆舒仗亳于舒仆亠 仆舒 从仂亟舒 仗仂 于磻仂 于亠仄亠
 仍亳仄亳仆亳舒 于亠仆仂仂 仗仂于舒礌亠 仆舒 弍亞仂于亠
仂弍亳 仗舒从亳从亳
 丐亠仂于亠亠 亠 仗亳舒 仗仂 于亠仄亠 仆舒 仗亳舒仆亠 仆舒 从仂亟舒
 仂亶仂 仗亳亠 从仂亟舒, 仂亶 仗亳亠 亳 unit 亠仂于亠亠
 QA 仗亳亠 仆从亳仂仆舒仍仆亳亠 亠仂于亠
 亟仂 95% coverage 亠 亟仂舒亠仆
 亠 亠于舒亶亠 弍亠亰仄亳仍亠仆亳 仆亠舒
 亰仗仂仍亰于舒亶亠 test tables
 HTML coverage 亞亠仆亠舒仂
 亠仆舒仗亳于舒仆亠仂 仆舒 从仂亟, 亰舒 亟舒 弍亟亠 仗仂亟仍仂亢亠仆 仆舒 亠仂于亠,
亳 亰舒仍亢舒于舒
 亠亢仂于亳亠 于亰从亳 亠 亠于舒  亠舒仍仆亳 于亰从亳. Mock 亠
弍亠亰仄亳仍亠仆仂.
 仂于 亠 仗亳 bug
Package testing
 import testing
 Test functions - TestFunc(*testing.T)
 _test.go 舒亶仍
 go test
Unit testing
 lion.go
package lion
func Roar() string {
return "Lion roars"
}
func Bite() bool {
return false
}
Unit testing
 lion_test.go
package lion
import "testing"
func TestRoar(t *testing.T) {
res := Roar()
if res != "Lion roars" {
t.Error("Error")
}
}
Unit testing
 go test -v -cover
sh-3.2# go test -v -cover
=== RUN TestRoar
--- PASS: TestRoar (0.00s)
PASS
coverage: 50.0% of statements
ok _/Users/jivko/test 0.008s
Coverage
$ go test -coverprofile=coverage.out
$ go tool cover -html=coverage.out
Test tables
 弌亠 (slice) 仂 于仂亟 亳 亳亰仂亟亳 仂亶仆仂亳
 type []struct{}
 仄亠 仆舒 仂于亠仆亳 亠
 Error / Fatal
 Demo
Subtests
 t.Run()
 仗亳舒仆亠 仆舒 亠仂于亠 于 仗仂亟亠仂于亠
 亰仄仂亢仆仂 亰舒 舒仍亳舒仆亠 仆舒 仗仂亟亠 亳 仗仂亟仍亢舒于舒仆亠 仆舒
仂仆仂于仆亳亠 亠仂于亠
 go test -v -run MainTest/subTest
 亰于亳从于舒仆亠 仆舒 仂仗亠亟亠仍亠仆舒 亞仗舒 仂 仗仂亟亠仂于亠:
 go test -run regexp
Bash & Makefile
 make test & make
 丕亟仂弍仆仂 仂弍亠亟亳仆磦舒仆亠 仆舒 go 从仂仄舒仆亟亳
 亠仆舒 亳仆亠亞舒亳  Jenkins
 仂亟亞仂仂于从舒 仆舒 亠亟舒舒 仗亠亟亳 亳亰仗仍仆亠仆亳亠 仆舒 亠舒
DB mock
 go-sqlmock, sqlmock
 Empty interface{}
 PostgreSQL, SQLite
 Drivers: go test -tags=test
 pg.go - // +build !test
 sqlite.go - // +build test
Demo
 Simple
 Sbor()
 Errorf & Fatalf
 Table tests
 Subtests
 Makefile
 Test HTTP handler
仗仂亳 ?
jivko@siteground.com
仍舒亞仂亟舒!

More Related Content

Similar to Writing tests in Go (20)

Acceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnitAcceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnit
Bisser Todorov
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于...
 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于... 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于...
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于...
DAVID Academy
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11
DAVID Academy
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍...
 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍... 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍...
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍...
DAVID Academy
弌舒 仗仂亠从 仆舒 仍舒亞仂?!
弌舒 仗仂亠从 仆舒 仍舒亞仂?!弌舒 仗仂亠从 仆舒 仍舒亞仂?!
弌舒 仗仂亠从 仆舒 仍舒亞仂?!
仍舒亞仂于傳 亠仂于
Codeception test & Yii 2
Codeception test & Yii 2Codeception test & Yii 2
Codeception test & Yii 2
Tihomil Kulev
仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂
仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂
仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂
Evgeni Tsonev
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14
DAVID Academy
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2
DAVID Academy
Continuous integration (d.atanasov)
Continuous integration (d.atanasov)Continuous integration (d.atanasov)
Continuous integration (d.atanasov)
Deyan Atanasov
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8
DAVID Academy
JDK 1.5 New Features
JDK 1.5 New FeaturesJDK 1.5 New Features
JDK 1.5 New Features
Svetlin Nakov
舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆 亟仂弍 QA 仗仂亟仂亟
舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆  亟仂弍 QA 仗仂亟仂亟舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆  亟仂弍 QA 仗仂亟仂亟
舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆 亟仂弍 QA 仗仂亟仂亟
Bozhidar Boshnakov
亳亟仂于亠 仂亠仆亳 亠仂于亠
亳亟仂于亠 仂亠仆亳 亠仂于亠亳亟仂于亠 仂亠仆亳 亠仂于亠
亳亟仂于亠 仂亠仆亳 亠仂于亠
Kalin Vasilev
Visual Studio Team System 2008 Development Edition(for Software Development)
Visual Studio Team System 2008 Development Edition(for Software Development)Visual Studio Team System 2008 Development Edition(for Software Development)
Visual Studio Team System 2008 Development Edition(for Software Development)
Yosifov
仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL
 仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL 仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL
仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL
DAVID Academy
DrupalCamp Sofia 2015
DrupalCamp Sofia 2015DrupalCamp Sofia 2015
DrupalCamp Sofia 2015
Bozhidar Boshnakov
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2)
 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2) 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2)
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2)
DAVID Academy
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2)
 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2) 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2)
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2)
DAVID Academy
Acceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnitAcceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnit
Bisser Todorov
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于...
 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于... 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于...
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 6. 弍亠从仆仂-仂亳亠仆亳舒仆仂 仗仂亞舒仄亳舒仆亠. 仍舒仂于...
DAVID Academy
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 11
DAVID Academy
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍...
 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍... 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍...
仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# 2013 - 7. 弌于仂亶于舒. 仆亟亠从舒仂亳. 舒仍亠亟磦舒仆亠. 亰从仍...
DAVID Academy
Codeception test & Yii 2
Codeception test & Yii 2Codeception test & Yii 2
Codeception test & Yii 2
Tihomil Kulev
仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂
仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂
仗亳亳仆亳 亰舒 舒于仂仄舒亳亰舒亳 仆舒 亠于舒仆亠仂
Evgeni Tsonev
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 14
DAVID Academy
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 2
DAVID Academy
Continuous integration (d.atanasov)
Continuous integration (d.atanasov)Continuous integration (d.atanasov)
Continuous integration (d.atanasov)
Deyan Atanasov
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8
丕亳仍亳亠仆 从 仗仂 仗仂亞舒仄亳舒仆亠 仆舒 C# (2013/2014), 亰舒仆亳亠 8
DAVID Academy
JDK 1.5 New Features
JDK 1.5 New FeaturesJDK 1.5 New Features
JDK 1.5 New Features
Svetlin Nakov
舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆 亟仂弍 QA 仗仂亟仂亟
舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆  亟仂弍 QA 仗仂亟仂亟舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆  亟仂弍 QA 仗仂亟仂亟
舒从 亟舒 仆舒仗舒于亳仄 亢亳于仂舒 亳 仗仂 - 仍亠亠仆 亟仂弍 QA 仗仂亟仂亟
Bozhidar Boshnakov
亳亟仂于亠 仂亠仆亳 亠仂于亠
亳亟仂于亠 仂亠仆亳 亠仂于亠亳亟仂于亠 仂亠仆亳 亠仂于亠
亳亟仂于亠 仂亠仆亳 亠仂于亠
Kalin Vasilev
Visual Studio Team System 2008 Development Edition(for Software Development)
Visual Studio Team System 2008 Development Edition(for Software Development)Visual Studio Team System 2008 Development Edition(for Software Development)
Visual Studio Team System 2008 Development Edition(for Software Development)
Yosifov
仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL
 仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL 仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL
仗仂 亳仆仂仄舒亳仂仆仆亳 亠仆仂仍仂亞亳亳 (2013) - 3. ADO.NET, LINQ to SQL
DAVID Academy
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2)
 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2) 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2)
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 4 - JavaScript (舒 2/2)
DAVID Academy
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2)
 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2) 仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2)
仗仂 亠弍 仗仂亞舒仄亳舒仆亠 (2015), 亰舒仆亳亠 3 - JavaScript (舒 1/2)
DAVID Academy

Writing tests in Go

  • 1. 丐亠于舒仆亠 Go 亳于从仂 仆亞亠仍仂于 25-亳 亊仆舒亳 2018
  • 2. 仂亶 仄 舒亰 ? 亳于从仂 仆亞亠仍仂于 DevOps @ SiteGround ExAdmin @ SiteGround Go 仗仂亞舒仄亳 仂 1 亞仂亟亳仆舒 仆舒亠 Perl 仗仂亞舒仄亳
  • 4. 舒仂 亠于舒仄亠 ? 亳亞磦舒 从舒亠于仂 仆舒 从仂亟舒 舒亰于亳于舒 从仂亟舒 仆舒 仄舒仍从亳 仗舒亠舒 亰仄仂亢仆仂 亰舒 仗仂亞舒仄亳舒仆亠 仂仍舒亶仆 亠仆舒仗亳于舒仆亠 仆舒 从仂亟舒 仗仂 于磻仂 于亠仄亠 仍亳仄亳仆亳舒 于亠仆仂仂 仗仂于舒礌亠 仆舒 弍亞仂于亠
  • 5. 仂弍亳 仗舒从亳从亳 丐亠仂于亠亠 亠 仗亳舒 仗仂 于亠仄亠 仆舒 仗亳舒仆亠 仆舒 从仂亟舒 仂亶仂 仗亳亠 从仂亟舒, 仂亶 仗亳亠 亳 unit 亠仂于亠亠 QA 仗亳亠 仆从亳仂仆舒仍仆亳亠 亠仂于亠 亟仂 95% coverage 亠 亟仂舒亠仆 亠 亠于舒亶亠 弍亠亰仄亳仍亠仆亳 仆亠舒 亰仗仂仍亰于舒亶亠 test tables HTML coverage 亞亠仆亠舒仂 亠仆舒仗亳于舒仆亠仂 仆舒 从仂亟, 亰舒 亟舒 弍亟亠 仗仂亟仍仂亢亠仆 仆舒 亠仂于亠, 亳 亰舒仍亢舒于舒 亠亢仂于亳亠 于亰从亳 亠 亠于舒 亠舒仍仆亳 于亰从亳. Mock 亠 弍亠亰仄亳仍亠仆仂. 仂于 亠 仗亳 bug
  • 6. Package testing import testing Test functions - TestFunc(*testing.T) _test.go 舒亶仍 go test
  • 7. Unit testing lion.go package lion func Roar() string { return "Lion roars" } func Bite() bool { return false }
  • 8. Unit testing lion_test.go package lion import "testing" func TestRoar(t *testing.T) { res := Roar() if res != "Lion roars" { t.Error("Error") } }
  • 9. Unit testing go test -v -cover sh-3.2# go test -v -cover === RUN TestRoar --- PASS: TestRoar (0.00s) PASS coverage: 50.0% of statements ok _/Users/jivko/test 0.008s
  • 10. Coverage $ go test -coverprofile=coverage.out $ go tool cover -html=coverage.out
  • 11. Test tables 弌亠 (slice) 仂 于仂亟 亳 亳亰仂亟亳 仂亶仆仂亳 type []struct{} 仄亠 仆舒 仂于亠仆亳 亠 Error / Fatal Demo
  • 12. Subtests t.Run() 仗亳舒仆亠 仆舒 亠仂于亠 于 仗仂亟亠仂于亠 亰仄仂亢仆仂 亰舒 舒仍亳舒仆亠 仆舒 仗仂亟亠 亳 仗仂亟仍亢舒于舒仆亠 仆舒 仂仆仂于仆亳亠 亠仂于亠 go test -v -run MainTest/subTest 亰于亳从于舒仆亠 仆舒 仂仗亠亟亠仍亠仆舒 亞仗舒 仂 仗仂亟亠仂于亠: go test -run regexp
  • 13. Bash & Makefile make test & make 丕亟仂弍仆仂 仂弍亠亟亳仆磦舒仆亠 仆舒 go 从仂仄舒仆亟亳 亠仆舒 亳仆亠亞舒亳 Jenkins 仂亟亞仂仂于从舒 仆舒 亠亟舒舒 仗亠亟亳 亳亰仗仍仆亠仆亳亠 仆舒 亠舒
  • 14. DB mock go-sqlmock, sqlmock Empty interface{} PostgreSQL, SQLite Drivers: go test -tags=test pg.go - // +build !test sqlite.go - // +build test
  • 15. Demo Simple Sbor() Errorf & Fatalf Table tests Subtests Makefile Test HTTP handler