One article to understand unit testing in GO (unit testing)

藏色散人
Release: 2022-11-01 19:38:59
forward
3427 people have browsed it

Unit testing refers to the inspection and verification of the smallest testable unit in the software

The unit is the smallest artificially specified functional module to be tested

General For example, the specific meaning must be determined based on the actual situation. For example, in C language, unit refers to a function, and in Go, unit is also a function. Unit testing is the lowest level test to be performed in the software development process. Activities, independent units of software are tested in isolation from other parts of the program.

Unit testing, we usually call it unit testing. When developing, we also need to write some demos to test functions or certain small functions in our projects [Recommended:
golang Tutorial

go test unit testThe unit test in the GO language uses the standard library

testing

There are the following simple rules:

Import the test standard library
  • The name of the single test file, followed by
  • _test
  • In the single test file The function name starts with Test, and the parameters must be
  • t *testing.T
##Simple example:

Write a simple Example, add suffix and prefix
.├── cal.go
├── cal_test.go
├── lll
└── sub.go
Copy after login

cal.go

package mainfunc Addprefix(str string) string {

    return "hello_"+str}func Addsuffix(str string) string {

    return str+"_good"}
Copy after login
cal_test.go

package mainimport "testing"func TestAddprefix(t *testing.T) {
        Addprefix("xiaomotong")}func TestAddsuffix(t *testing.T) {
        Addsuffix("xiaomotong")}
Copy after login
sub. go

package mainfunc MyAdd(a int, b int) int  {

    if a+b > 10{
        return 10
    }

    return a+b}func MySub(one int, two int) int{

    if one - two <strong></strong>sub_test.go<p></p><pre class="brush:php;toolbar:false">package mainimport "testing"import "fmt"func TestMyAdd(t *testing.T) {
    num := MyAdd(4 ,9)
    fmt.Println(num)

    num = MyAdd(4 ,2)
    fmt.Println(num)}
Copy after login
Perform unit test

go test -v
Copy after login
-v
  • -v is the parameter that will display the test results of each use case, display the executed single test function, whether it passed and when the single test was performed

The running results are as follows

=== RUN   TestAddprefix
--- PASS: TestAddprefix (0.00s)=== RUN   TestAddsuffix
--- PASS: TestAddsuffix (0.00s)=== RUN   TestMyAdd
10
6
--- PASS: TestMyAdd (0.00s)PASS
ok      my_new_first/golang_study/later_learning/gotest 0.002s
Copy after login
Executing go test in the package directory will execute all unit test files in the package

Only run the specified unit test function

We can Use this:

go test -run TestMyAdd -v

The result is as follows:

=== RUN   TestMyAdd
10
6
--- PASS: TestMyAdd (0.00s)PASS
ok      my_new_first/golang_study/later_learning/gotest 0.002s
Copy after login

Subtest

In the single test function we wrote, call the Run method in the testing package to run the subtest

Let’s modify the above

sub_test.go

package mainimport "testing"import "fmt"func TestMyAdd(t *testing.T) {
    num := MyAdd(4 ,9)
    fmt.Println(num)

    num = MyAdd(4 ,2)
    fmt.Println(num)}func TestMySub(t *testing.T) {
        t.Run("one", func(t *testing.T) {
                if MySub(2, 3) != 1 {
                        t.Fatal("cal error")
                }

        })
        t.Run("two", func(t *testing.T) {
                if MySub(3, 1) != 2 {
                        t.Fatal(" error ")
                }
        })}
Copy after login
Call the sub-test function separately and execute go test -run TestMySub/one -v

=== RUN   TestMySub=== RUN   TestMySub/one
--- PASS: TestMySub (0.00s)
    --- PASS: TestMySub/one (0.00s)PASS
ok      my_new_first/golang_study/later_learning/gotest 0.003s
Copy after login
to generate a report and calculate coverage

Generate coverage report file

  • go test -v -covermode=count -coverprofile=cover.out

Use go tool to convert to html format

  • go tool cover -html=cover.out -o cover.html

Open the html file in the browser and you can view the following report

The green part in the picture is covered, the red part is not covered, our example has fully covered the specific function functionsOne article to understand unit testing in GO (unit testing)

go test The following instructions , we can also look at the help documentation

Many companies have begun to improve performance. Single testing, automated testing, and CI/CD all need to be started quickly. It is best to Made into one-click release and one-click rollback. I envy these places with very complete infrastructure, hahaha~One article to understand unit testing in GO (unit testing)

The above is the detailed content of One article to understand unit testing in GO (unit testing). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template