Junit5でテスト途中でassertに失敗すると後続のテストが実施されない
理由としては、assertEquals()の最初の方で失敗すると、移行のテストを実行できずに中断してしまうため。
毎回listOfでラップするのもアホらしいし、絶対何か解決策があると思ったので、調べてみたらやっぱりあった。
assertAllというメソッドで行けるらしいが、それだけだとまだダメ。abortされるとダメらしい。
abortが何をさすのかわからなかったので調べた。
で、よくわからない。直接abortとかいうメソッドを使うわけではないと思う。
abort自体は中断という意味なので、多分System.exit()のことを指すのだと考えた。
で、下記のコードでテスト。
code:test.kt
@Test
fun testIsWithinBoardRange() {
assertAll(
Executable { println("foooo") },
Executable { assertEquals(1, 2)},
//Executable { System.exit(1) },
Executable { println("foooo") }
)
}
プロセスを殺されると確かにテストコードがここで中断されてしまっていた。 ただ、まぁSystem.exit()するようなコードを今回は書くことはない想定なので、
テストコードの深ぼりまではしなくてよいか、と思ったのでassertAllを使うことにした。
そうなると...今までのlistOfの実装もassertAllに直したくなってくる。
最初に修正しとくべきだった...。