The latest AssertJ release notes have brought to my attention that I haven't really experimented much with assertj assumptions, so I thought I'd play around with it a bit:
object AssertjAssumptions {
@MethodSource("starWarsCharacters")
@ParameterizedTest
fun `light-aligned force users`(character: ForceUser){
given(character.alignment).isEqualTo(LIGHT)
then(character.lightsaberColour).isNotEqualTo(RED)
}
@MethodSource("starWarsCharacters")
@ParameterizedTest
fun `dark-aligned force users`(character: ForceUser){
given(character.alignment).isEqualTo(DARK)
then(character.lightsaberColour).isIn(RED, UNKNOWN)
}
enum class Alignment {
LIGHT, DARK, WEIRD
}
enum class LightsaberColour{
BLUE, GREEN, YELLOW, PURPLE, RED, WHITE, UNKNOWN
}
data class ForceUser(val name: String, val alignment: Alignment, val lightsaberColour: LightsaberColour)
@JvmStatic fun starWarsCharacters() = listOf(
ForceUser("2nd Sister", DARK, RED),
ForceUser("Ahsoka Tano", WEIRD, WHITE),
ForceUser("Asajj Ventress", DARK, RED),
ForceUser("Cal Kestis", LIGHT, UNKNOWN),
ForceUser("Count Dooku", DARK, RED),
ForceUser("Darth Maul", DARK, RED),
ForceUser("Darth Vader", DARK, RED),
ForceUser("Ki-Adi-Mundi", LIGHT, BLUE),
ForceUser("Kylo Ren", WEIRD, RED),
ForceUser("Luke Skywalker", LIGHT, GREEN),
ForceUser("Mace Windu", WEIRD, PURPLE),
ForceUser("Obi-Wan Kenobi", LIGHT, BLUE),
ForceUser("Qui-Gon Jinn", LIGHT, GREEN),
ForceUser("Quinlan Vos", WEIRD, YELLOW),
ForceUser("Rey", WEIRD, BLUE),
ForceUser("Sheev Palpatine", DARK, RED),
ForceUser("Snoke", DARK, UNKNOWN),
ForceUser("Yoda", LIGHT, GREEN)
)
}
This seems to work, but reports
Tests passed: 13, ignored: 23 of 36 tests
Which is suboptimal.
Can I somehow tell JUnit that for these tests, "ignored" means the test can be treated as non-existent?