Currently, it is hard to determine where a test should go, since a lot of the test files are organized around overlapping features, resulting in multiple places that could seem like the right place for the tests.
This disorganization can make it harder to:
- find where to put a new test
- notice duplicate tests
- determine if a code path is tested
- run the relevant tests for a code change
I think this disorganization largely came from the disorganization of the code under test (#497).
Instead, tests for a code path in the code under test belongs in a test file with a corresponding name and in a test name prefixed with a corresponding test name prefix. Note that a test can be for a code path in a method without directly calling it.