Вопросы
Я хотел бы знать вариант использования t.Cleanup
, представленный в Go1.14. В чем преимущество t.Cleanup по сравнению с использованием defer?
https://golang.org/pkg/testing/#T .Cleanup .
Например, предположим, что мы создаем временный каталог, и при его тестировании мы хотим удалить созданный нами временный каталог.
t.Cleanup
можно использовать для написания теста следующим образом, но он также работает как defer os.RemoveAll(tempDir)
.
package mypkg
import (
"io/ioutil"
"os"
"testing"
)
func TestDirwalk(t *testing.T) {
tempDir, err := ioutil.TempDir(".", "temp")
if err != nil {
t.Errorf("create tempDir: %v", err)
}
t.Cleanup(func() { os.RemoveAll(tempDir) })
// something...
}
Например, в отличной статье ниже описывается проблема, когда возникает пани c, но defer
вызывается даже при возникновении пани c, я думаю . Итак, я так и не понял, что может пригодиться.
https://www.gopherguides.com/articles/test-cleanup-in-go-1-14/
Чем полезен t.Cleanup
?