Many tests take parameters. Parameters may be passed into a test via system properties or environment variables. These parameters can be regarded as part of the test's contract. Over time, with increasing number of tests, it becomes hard to keep track of the set of parameters that may be used by the tests.
I propose to address this issue at two levels:
1. Introduce an annotation type for annotating a test class with the list of system properties and environment variables used by it. This allows for the contract to be exposed in the javadoc, as well as to annotation processing tools.
2. Provide utility functions for automatically obtaining the parameters and their values from the above annotation.
Not addressed in this proposal: Injecting 2. into the test runner itself (currently we are running tests through JUnit).