The [`Assertions`](https://junit.org/junit5/docs/current/api/org/junit/jupiter/api/Assertions.html) class in JUnit 5 allows for passing an [`Supplier<String>`](https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html) as a `messageSupplier`, an object that provides the text of a message to report when the test fails.

For example, [`assertEquals`](https://junit.org/junit5/docs/current/api/org/junit/jupiter/api/Assertions.html#assertEquals(char,char,java.util.function.Supplier)):

```java
public static void assertEquals​( char expected,
                                 char actual,
                                 Supplier<String> messageSupplier )

```

I am wondering what the **practical use of such a supplier** might be, specifically in the context of unit testing. 

I can imagine perhaps localizing the strings, though that seems a bit strange to localize when the audience is the members of a development project. 

➥ Are there any other practical uses of passing such a message supplier rather than [hard-coding](https://en.wikipedia.org/wiki/Hard_coding) message string?