0

テストにフルーツを使用するプロジェクト(fortranコード)があります。これは私のコードです。

電卓.f90

module calculator
   implicit none
   contains
   subroutine add (a, b, output)
       integer, intent(in) :: a, b
       integer, intent(out):: output
       output = a+b
   end subroutine add
end module calculator

そして私のテストの計算機_test.f90

module calculator_test
   use fruit
   contains
   subroutine test_5_2_2
      use calculator, only: add
      integer :: result
      call add(2,2,result)
      call assertEquals(4,result)
   end subroutine test_5_2_2

   subroutine test_5_2_3
      use calculator, only: add
      integer :: result
      call add(2,3,result)
      call assertEquals(5,result)
   end subroutine test_5_2_3
end module

ここで、Cmake を使用してテストをビルドして実行したいので (jenkins によってトリガーされます)、私の質問は次のとおりです。それでどうやって?私はオンラインで多くのことを検索しましたが、cmake でのすべてのテストは c++ で行われ、次に実行可能なテストファイル ファイルを使用して行われるようです。

ありがとう!-ミンデ

4

1 に答える 1

1

作成したテストはそのまま実行できます。実行方法を CMake に指示するだけです。これがCOMMANDへの引数の目的ADD_TESTです。

ENABLE_TESTING()
ADD_TEST(NAME "YourTest" 
    WORKING_DIRECTORY ${TEST_DIRECTORY}
    COMMAND ${TEST_DIRECTORY}/test_dim)

通常、コマンドが実行可能ファイルである上記のような例が表示されます (C++ の例で見たように)。しかし、そうである必要はありません。たとえば、CMake を使用して python テストを実行していて、次のようにテストを追加します。

ADD_TEST(NAME PythonTests 
    WORKING_DIRECTORY ${TEST_DIRECTORY}
    COMMAND ${PYTHON_EXECUTABLE} setup.py test

したがって、Fruit テストを実行するには、Fruit テスト ランナーを作成するコマンドを呼び出します (これはrakeコマンドだと思います... 以下ではこれが正しいと仮定しますが、実際に呼び出すものは何でも代用する必要がありますテストを実行するためのコマンド ライン):

ADD_TEST(NAME FruitTests 
    WORKING_DIRECTORY ${TEST_DIRECTORY}
    COMMAND rake test) # Or whatever the command is.

コマンドラインで実行するmake testと、「FruitTests」が失敗したか成功したかがわかります。

注意 点 CMakeはプログラムの終了コードでテストの成否を判断します。デフォルトでは、Fortran プログラムには終了コードがありません (または、終了コードがある場合は常に 0 です)。Fruit と CMake を使用して Fortran テストを実行する場合、テスト ランナーを自分で作成し、call exit(exit_code)組み込みのサブルーチンを使用して終了コードが CMake に返されるようにします。Fruit の自動テスト ランナー クリエーターがこれを行うかどうかはわかりません。これは自分で確認する必要があります。

于 2013-07-12T06:13:17.313 に答える