One thing I love about Go is it's build chain and overall ease of use. Some things take time to get used to, but the lightning fast builds and the convention-based testing Go offers are addicting right from the start.
Today I found another hidden Gem I think is just genius: testing.T.Log()
. Ok I admit, not the most sexy method to get excited about - but bear with me for a moment. Imagine the following code.
func TestSomething(t *testing.T) { t.Log("Hello World") }
What's the output? If you'd expect Hello World
you are mistaken. The output is exactly nothing :)
testing.T.Log()
only prints something if a testing.T.Error
or testing.T.Fatal
occurred. Brilliant! Nothing is more annoying than chatty test suites where your actual problem is buried in 2-3 megabytes of meaningless debug statements! And this solves the problem really elegantly. You can log as much debug info as you want and it will only surface if the test actually failed.