@DisplayName is a great way to write meaning full human-readable text to distinguish the test case methods. @DisplayName helps to read test case report better.
but if an application has lots of test cases, then writing @DisplayName for each method is tedious work.
Junit 5 provides @DisplayNameGeneration annotation, which will automatically generate the test case method name for the test case generated report using the method name.
Junit 5 has DisplayNameGenerator interface, which defines 3 methods
generateDisplayNameForClass
Read the class name and use them for Display Name
generateDisplayNameForNestedClass
Read the nested class name and use them for Display Name
parameterTypesAsString
Read the input parameters of test case methods and use them for Display Name.
The
@DisplayNamewill always take precedence over@DisplayNameGenerator.
Predefined Display Name Generator
Junit 5 provides some predefined DisplayNameGenerator interface implementations.
Standard
Standard is the default Display Name Generator for Junit 5.
Simple
Simple will remove the trailing parentheses of methods with no parameter.
ReplaceUnderscores
ReplaceUnderscores will replace all underscores with space.
IndicativeSentences
IndicativeSentences creates Display Name by concatenating the name of the Test class and test case method name.
Display Name Generator Configuration Parameter
Annotating multiple test cases class with @DisplayNameGeneration is redundant, Junit 5 allows to define of the fully qualified name of Display Name Generator in src/test/resources/junit-platform.properties file.
Standard Display Name Generator
junit.jupiter.displayname.generator.default=org.junit.jupiter.api.DisplayNameGenerator$StandardSimple Display Name Generator
junit.jupiter.displayname.generator.default=org.junit.jupiter.api.DisplayNameGenerator$SimpleReplace Underscores Display Name Generator
junit.jupiter.displayname.generator.default=org.junit.jupiter.api.DisplayNameGenerator$ReplaceUnderscoresIndicativeSentences Display Name Generator
junit.jupiter.displayname.generator.default=org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentencesCustom Display Name Generator
junit.jupiter.displayname.generator.default=org.wesome.junit5.CustomDisplayNameGenerator