One thing I love in the upcoming release of jUnit is the @DisplayName annotation. This annotation allows to use languageĀ to name a unit test. Kevlin Henney in his talk “What We Talk About When We Talk About Unit Testing” has shown power of using English language to specify what unit test is doing. For example:
@Test @DisplayName("ISBNs with more than 13 Digits are Malformed") public void isValid() { ISBNValidator isbnValidator = new ISBNValidator(); Boolean isValid = isbnValidator.isValid("1111222233334444"); assertEquals(false, isValid); }
Which results in unit tests being a great specification for a component. Furthermore you can use this cool IntelliJ IDEA feature, which allows to see all component tests by name. So the final result looks like this:
By looking at the image, we can clearly know what component does and what it’s corner cases are, which gives us a lot of insight. Actually, we even know that it does what itĀ say it does, because test ran fine!
Although you can do this usingĀ regular camel case method naming, but it is really hard to read:
@Test public void isbnsWithMoreThan13DigitsAreMalformed() { ISBNValidator isbnValidator = new ISBNValidator(); Boolean isValid = isbnValidator.isValid("1111222233334444"); assertEquals(false, isValid); }
and the resulting spec:
This example is taken from the talk mentioned above, I really suggest you to watch it.
Thanks for reading !Ā Until next time!