brain/src/dev/golang/testing.md

110 lines
1.4 KiB
Markdown
Raw Normal View History

2019-04-30 15:09:45 +00:00
# Testing tips, golang edition
[Documentation](https://golang.org/pkg/testing/)
## Files
Test file should be place in the package directory and should be name using
the following convention :
- repo : github.com/go/pkg
- package : github.com/go/pkg/example
- package file : example/pkg.go
- test file : exemple/pkg_test.go
## Run
```shell
go test github.com/go/pkg/package
```
### fmt.Println is not working
Gniagniagnia, use
```golang
t.Log()
```
or
```golang
t.Logf()
```
2019-07-07 19:21:21 +00:00
2019-04-30 15:09:45 +00:00
also,
```shell
go test github.com/go/pkg/package -v
```
## How to fail
### Mark test as failed (next tests executed)
```golang
t.Fail()
```
2019-07-07 19:21:21 +00:00
2019-04-30 15:09:45 +00:00
### Mark test as failed AND exit
```golang
t.FailNow()
```
### Print and mark test as failed
```golang
t.Error()
```
or
```golang
t.Errorf()
```
### Print, mark test as failed AND exit
```golang
t.Fatal()
```
or
```golang
t.Fatalf()
```
## I don't want my tests to be messy (kudos @athoune)
[Assert](https://godoc.org/github.com/stretchr/testify/assert)
2019-05-02 19:18:51 +00:00
## Shit, i want to disable my oauth test on my CI
```golang
if os.Getenv("DRONE") == "true" {
t.Skip("Skipping test in CI environment")
}
```
## Short mode
This test is too long ? Skip it !
```golang
2019-07-07 19:21:21 +00:00
if testing.Short() {
t.Skip("Skipping test in short mode")
}
2019-05-02 19:18:51 +00:00
```
```shell
go test github.com/go/pkg/package --short
2021-08-10 16:03:36 +00:00
```
## Cleanup test cache
```shell
go clean -testcache
```