JUnit4でテスト実行順序をメソッド名順にソートする方法
JUnitでテストをする際、デフォルトの状態だとテストメソッドが実行される順番がバラバラになります。記載順でもないし名前順でもない。意味不明なので名前順にソートして実行する方法をサクッとご紹介!
クラス宣言にアノテーションを付ける
@FixMethodOrder (MethodSorters.NAME_ASCENDING)
クラス宣言の前にアノテーションを記載するだけです。
記載例
import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; @FixMethodOrder (MethodSorters.NAME_ASCENDING) public final class test { /** テスト実行01 */ @Test public void test01() { } /** テスト実行03 */ @Test public void test03() { } /** テスト実行02 */ @Test public void test02() { } }
これで、test01→test02→test03の順番に実行されます。
ちなみに、文字列順なのでtest1test2test10というメソッドがあった場合、test1→test10→test2という順番になってしまうので注意が必要です。
その他のパラメータ
また、アノテーションに渡すパラメータは他にもあります。あまり実用的ではないですが、一応ご紹介。
JVM返却順
@FixMethodOrder (MethodSorters.JVM)
JVMから返された順序で実行されます。実行の度に順番が変わるので注意して下さい。
デフォルト順
@FixMethodOrder (MethodSorters.DEFAULT)
デフォルトの状態です。アノテーションを指定しない場合と同じです。何回やっても同じ順番ですが、意味不明な順番です。