Conditions
Conditions are part of our everyday language. The Condition interface captures a conditional as something that can be reused. For example, waiting for something can be achieved using the WaitFor (see waiting) class and an anonymous Condition. For example,
1 2 3 4 5 6 7 | |
will wait for some server to indicate that it has shutdown. The Conditions class collects useful Condition objects such as not. There is also a useful Condition to indicate if a thread is in a waiting state in ThreadUtils.
Some common thread related conditions have been collected in the Conditions class. These include a not condition to invert the result of some other condition and various thread state related conditions such as checking if a a thread alive. See the miscellaneous thread utils section for details.
For testing purposes, you might want to assert against the outcome of a Condition. The Conditions class has an assertThat method which takes a Matcher<Boolean> for use with JUnit. For example, you could assert against a condition using vanilla JUnit like this.
1
| |
or using the Conditions class, you can tidy the assert up to look like this.
1
| |
If you have Matchers available in your production code, you can use this with flexible waits, for example,
1
| |