Junitユニットテスト実行の手順


Junitユニットテスト実行の手順

  • 私たちはJUnitのテスト例を書く時、定義の順序に従って私たちのユニットのテスト方法を実行する必要がある場合がある.
  • は、例えば、データベースに関連する使用例をテストする際に、テスト挿入、クエリー、削除の順序でテストする.
  • この順序でテストしないと、削除方法が前に実行するなどの問題が発生する可能性があり、後の方法はテストに合格できない.
  • データが空になったためです.JUnitテストのデフォルトの順序はランダムです.そのため、JUnitがテスト方法を実行するときに私たちが指定した順序で実行するように要求する方法が必要です.
  • 設計原則に従って、JUnitはテストメソッド呼び出しの実行順序を指定しない.
  • は、これまで、これらの方法は、反射APIが返す順序で単純に実行されてきた.
  • しかし、Javaプラットフォームが規則的な順序を指定していないため、JVMのデフォルトで提供されるソートを使用するのは賢明ではありません.
  • であるが、実際にはJDK 7はランダムな順序を返す可能性がある.
  • もちろん、丹念に作成されたテストコードの間で実行順序を仮定する必要はありませんが、場合によっては、いくつかのプラットフォームで予測可能な失敗は、ランダムな失敗よりも優れています.
  • この例では、Junitの@FixMethodOrder注記により、セルテストにおけるメソッドの実行順序
  • を設定する.
  • では、DefaultOrderTestとNotSettingOrderTestの実行結果は同じ
  • であることがわかります.
  • JVMOrderTestは毎回異なる結果を返す
  • NameAscOrderTestは、メソッド名の辞書順に実行された結果
  • を返します.
    demoは以下の通りです.
    順序を指定しない:バージョン4.11から、JUnitはデフォルトで確定した順序を使用しますが、予測できない順序を使用します.実行順序とDefaultOrderTest
    public class NotSettingOrderTest {
    
        @Test
        public void one() {
            System.out.println("1");
        }
        @Test
        public void two() {
            System.out.println("2");
        }
        @Test
        public void three() {
            System.out.println("3");
        }
        @Test
        public void four() {
            System.out.println("4");
        }
    
        /**
         *  , :
         1
         2
         4
         3
         */
    }

    MethodSorters.DEFAULT:デフォルトの順序実行順序がNotSettings OrderTestと同じである
    @FixMethodOrder(MethodSorters.DEFAULT)
    public class DefaultOrderTest {
        @Test
        public void one() {
            System.out.println("1");
        }
        @Test
        public void two() {
            System.out.println("2");
        }
        @Test
        public void three() {
            System.out.println("3");
        }
        @Test
        public void four() {
            System.out.println("4");
        }
    
        /**
         *  :
         1
         2
         4
         3
         */
    }

    MethodSorters.JVM:テストメソッドの実行順序は、JVMが返す順序で保持されます.各テストの実行順序が異なる場合があります.
    @FixMethodOrder(MethodSorters.JVM)
    public class JVMOrderTest {
        @Test
        public void one() {
            System.out.println("1");
        }
        @Test
        public void two() {
            System.out.println("2");
        }
        @Test
        public void three() {
            System.out.println("3");
        }
        @Test
        public void four() {
            System.out.println("4");
        }
    
        /**
         *  
         */
    }

    MethodSorters.NAME_ASCENDING:メソッド名の辞書順に昇順に実行
    @FixMethodOrder(MethodSorters.NAME_ASCENDING)
    public class NameAscOrderTest {
        @Test
        public void one() {
            System.out.println("1");
        }
        @Test
        public void two() {
            System.out.println("2");
        }
        @Test
        public void three() {
            System.out.println("3");
        }
        @Test
        public void four() {
            System.out.println("4");
        }
    
        /**
         *  , :
         4
         1
         3
         2
         */
    }