We are using additional underscores for different kinds of _test.go files. For example _system_test.go and _component_test.go for system and component tests. These files have special build tags since they do not belong to the project's unit test. A simple `go test` will then only execute unit tests. Please note, that by default (afaik) linting and other analysis tools will only work on these files if you include the build tags. That is why I went through some projects to add that functionality (e.g.
https://github.com/golang/lint/pull/153 is still pending). Some will say that a suffix like `_system_test.go` is too long, but with that you do not need to search for your tests in your project. They are, like normal _test.go files, right beside the code they are testing. Also, we are big fans of mocks/fakes and non-external fixtures e.g. we try to avoid saving test data in the /testdata folder. It is much faster to have fixtures included in the code or simply not at all, by generating them on the fly. In your case I can also say that mocks/fakes will benefit you a lot. In our case we try to have as few system tests as possible. Most tests with calls to an actual HTTP/database/... server or to the FS are mocked out. That means that most of our tests do not leave their test function and can be executed without external setups/fixtures (e.g. initializing a database, starting a HTTP server) and are therefore extremely fast.
It took a while for us to make this all happen but it is pretty neat to test all API servers and their interactions in a few seconds instead of hours.