From 90065aac82765f86ac983b94261b90cac8c20f2a Mon Sep 17 00:00:00 2001 From: Arseny Balobanov Date: Thu, 11 Mar 2021 17:35:16 +0300 Subject: [PATCH] [lectures/04-testing] Add coverage and t.Cleanup() examples. --- lectures/04-testing/gomock/example_test.go | 5 ++- lectures/04-testing/lecture.slide | 34 +++++++++++++++++++-- lectures/04-testing/mocks/mocks.go | 22 ++++++------- lectures/04-testing/size/coverage.png | Bin 0 -> 44909 bytes lectures/04-testing/size/size.go | 17 +++++++++++ lectures/04-testing/size/size_test.go | 22 +++++++++++++ 6 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 lectures/04-testing/size/coverage.png create mode 100644 lectures/04-testing/size/size.go create mode 100644 lectures/04-testing/size/size_test.go diff --git a/lectures/04-testing/gomock/example_test.go b/lectures/04-testing/gomock/example_test.go index 195bbbf..047672a 100644 --- a/lectures/04-testing/gomock/example_test.go +++ b/lectures/04-testing/gomock/example_test.go @@ -3,14 +3,13 @@ package example import ( "testing" - gomock "github.com/golang/mock/gomock" + "github.com/golang/mock/gomock" ) func TestFoo(t *testing.T) { ctrl := gomock.NewController(t) - // Assert that Bar() is invoked. - defer ctrl.Finish() + defer ctrl.Finish() // Assert that Bar() is invoked. m := NewMockFoo(ctrl) diff --git a/lectures/04-testing/lecture.slide b/lectures/04-testing/lecture.slide index 3fb8cbf..4dce352 100644 --- a/lectures/04-testing/lecture.slide +++ b/lectures/04-testing/lecture.slide @@ -276,7 +276,23 @@ Good example * Coverage -- Пример в goland. +.play size/size.go /func/,/^}/ + +* Coverage + +.play size/size_test.go /func/,/^}/ + + go test -cover + PASS + coverage: 42.9% of statements + ok gitlab.com/slon/shad-go/lectures/04-testing/size 0.001s + +* Coverage + + go test -coverprofile=coverage.out + go tool cover -html=coverage.out + +.image size/coverage.png * Benchmark Functions @@ -435,6 +451,20 @@ Good example // ... } +* t.Cleanup() + + func newEnv(t *testing.T) *env { + // ... + t.Cleanup(func() { + DB.Close() + }) + } + + func TestA(t *testing.T) { + env := newEnv(t) + // ... + } + * Fixture Composition type MyFixture struct { @@ -480,7 +510,7 @@ Good example * White box testing -.play mocks/mocks.go /var/,/OMIT/ +.play mocks/mocks.go /func CheckQuota/,/OMIT/ * White box testing diff --git a/lectures/04-testing/mocks/mocks.go b/lectures/04-testing/mocks/mocks.go index a8e3a18..90a4ad7 100644 --- a/lectures/04-testing/mocks/mocks.go +++ b/lectures/04-testing/mocks/mocks.go @@ -13,17 +13,6 @@ func bytesInUse(username string) int { return 10000000000 } -var notifyUser = doNotifyUser - -func doNotifyUser(username, msg string) { - auth := smtp.PlainAuth("", sender, password, hostname) - err := smtp.SendMail(hostname+":587", auth, sender, - []string{username}, []byte(msg)) - if err != nil { - log.Printf("smtp.SendEmail(%s) failed: %s", username, err) - } -} - func CheckQuota(username string) { used := bytesInUse(username) const quota = 1000000000 // 1GB @@ -35,4 +24,15 @@ func CheckQuota(username string) { notifyUser(username, msg) } +var notifyUser = doNotifyUser + +func doNotifyUser(username, msg string) { + auth := smtp.PlainAuth("", sender, password, hostname) + err := smtp.SendMail(hostname+":587", auth, sender, + []string{username}, []byte(msg)) + if err != nil { + log.Printf("smtp.SendEmail(%s) failed: %s", username, err) + } +} + // OMIT diff --git a/lectures/04-testing/size/coverage.png b/lectures/04-testing/size/coverage.png new file mode 100644 index 0000000000000000000000000000000000000000..a7014a49f53e825f1f485fab5055543836f5b40f GIT binary patch literal 44909 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