This is a clear case of RTFM!
I wanted to make sure that a function will return null when given a null or empty string and what I ended up doing was something like this:
internal class CreateNameTest { | |
@ParameterizedTest | |
@ValueSource(strings = ["null", "", " "]) | |
fun `there is no creation when the provided value is null or empty or blank`(providedValue: String?) { | |
val value: String? = if (providedValue == "null") | |
null else | |
providedValue | |
assertThat(createName(value), absent()) | |
} | |
} |
@ValueSource does not accept null values so I passed it indirectly!
I didn’t like it so after, finally, reading the JUnit5 documentation I learned that the library had me covered from the beginning by providing three annotations exactly for this use case:
@NullSource, @EmptySource and @NullOrEmptySource are meant to be used whenever we need to check the behavior of our code when given null or empty inputs.
So the test changes to:
internal class CreateNameTest { | |
@ParameterizedTest | |
@NullAndEmptySource | |
@ValueSource(strings = [" "]) | |
fun `there is no creation when the provided value is null or empty or blank`(providedValue: String?) { | |
assertThat(createName(providedValue), absent()) | |
} | |
} |
PS: for the curious, the absent()
is part of the hamkrest library by Nat Pryce (yes, that Nat Pryce)
Top comments (0)