2013-07-11 49 views
0

我有一個項目,使用水果進行測試(fortran代碼)。 這是我的代碼。Cmake水果測試

calculator.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 

而且我的測試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的構建和運行我的測試(詹金斯觸發) ,所以我的問題是:我是否需要更改測試或者是否可以運行我通過cmake編寫的測試,如果是這樣的話? 我在網上搜索了很多,但所有與cmake測試似乎是用C++完成,然後通過使用可執行的測試文件文件。

謝謝! -Minde

+0

我已經在下面回答了假設你已經知道CMake。如果沒有,請告訴我,我可以添加一些細節讓你開始。如果回答不夠清楚,請在您的問題中添加一些細節,以便更清楚您需要在CMake中執行哪些操作。 – SethMMorton

回答

1

你可以運行你寫的測試,你只需告訴CMake如何運行它們。這就是ADD_TESTCOMMAND參數。通常,你會看到一些像上面那樣的例子,其中命令是一個可執行文件(正如你在C++例子中看到的那樣)。但它不一定是。例如,我通過CMake的運行蟒蛇測試,我添加了測試,像這樣:

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

因此,運行你的水果測試,你會說這就是爲您創建果測試運行的命令(我相信它是一個rake命令我會假設這下面是真實的,但你應該替代不管你實際在命令行上調用運行測試):當你在命令行中運行make test

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

它應該告訴你「FruitTests」是否失敗或成功。

警告一句話 CMake通過程序退出代碼確定測試成功或失敗。默認情況下,Fortran程序沒有退出代碼(或者如果他們這樣做,它總是爲0)。當我使用Fruit和CMake進行Fortran測試時,我自己編寫測試運行器並使用call exit(exit_code)內置子程序確保將退出代碼返回給CMake。我不確定Fruit的自動測試跑步者創作者是否這樣做;你將不得不自己驗證一下。

+0

謝謝你的回覆。 – Minde

+0

我的印象是我不得不在「add_test」命令中使用一個可執行的命令,所以這一點很重要。謝謝! – Minde