It strikes me that when using the standard Go testing tools, Unit testing is writing tests for entities within a package. There may be one or more unit tests for each file in a package. There are many, many good examples of Go unit tests.
For an application or library (where an application generates a binary and a library is simply a package comprising sub-packages) integration testing consists of writing tests that include multiple packages. This implies that an application with simply a main package can not have integration tests. I cannot claim to have seen much in the way of Go integration testing. Can someone suggest standard library packages that might provide examples of multiple packages being tested in unison? It would seem that integration testing would leverage the standard Go testing and coverage tools.
End-to-end tests strike me as applying to one or more applications using tests written to drive and interact with the application binaries, either individually or in groups. I've not seen much on this topic either and it strikes me that maybe benchmarks fall into this category.
It also strikes me that the 70/20/10 split between unit tests, integration tests and end-end tests recommended in a recent
Google Test Automation Conference blog post is about right for large Go development projects.
Comments?