I have a JUnit test class in which I have several static final ints that can be redefined at the top of the tester code to allow some variation in the test values. I have logic in my @BeforeClass method to ensure that the developer has entered values that won’t break my tests.
I would like to improve variation further by allowing these ints to be set to (sensible) random values in the @BeforeClass method if the developer sets a boolean useRandomValues = true;. I could simply remove the final keyword to allow the random values to overwrite the initialisation values, but I have final there to ensure that these values are not inadvertently changed, as some tests rely on the consistency of these values.
-
Can I use a constructor in a JUnit test class? Eclipse starts putting red underlines everywhere if I try to make my @BeforeClass into a constructor for the test class, and making a separate constructor doesn’t seem to allow assignment to these variables (even if I leave them unassigned at their declaration);
-
Is there another way to ensure that any attempt to change these variables after the @BeforeClass method will result in a compile-time error?
-
Can I make something final after it has been initialised?
You can do this with a static constructor: