我有一个使用水果进行测试的项目(fortran代码)。 这是我的代码。
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来构建和运行我的测试(由jenkins触发),所以我的问题是:我是否需要更改测试或是否可以运行我通过cmake编写的测试,如果是这样怎么样? 我在网上搜索了很多,但是用cmake进行的所有测试似乎都是用c ++完成的,然后是使用可执行的testfiles文件。
谢谢! -Minde
答案 0 :(得分:1)
您可以按原样运行测试,只需要告诉CMake如何运行它们。这就是COMMAND
的{{1}}参数。
ADD_TEST
通常,您会看到一些类似上面的示例,其中命令是可执行文件(如您在c ++示例中所见)。但它不一定是。例如,我正在通过CMake运行python测试,我就像这样添加测试:
ENABLE_TESTING()
ADD_TEST(NAME "YourTest"
WORKING_DIRECTORY ${TEST_DIRECTORY}
COMMAND ${TEST_DIRECTORY}/test_dim)
所以,要运行你的Fruit测试,你会调用为你创建Fruit测试运行器的命令(我相信它是一个ADD_TEST(NAME PythonTests
WORKING_DIRECTORY ${TEST_DIRECTORY}
COMMAND ${PYTHON_EXECUTABLE} setup.py test
命令......我会假设这是真的,但你应该替换您在命令行上实际调用的任何内容来运行测试):
rake
当您在命令行上运行ADD_TEST(NAME FruitTests
WORKING_DIRECTORY ${TEST_DIRECTORY}
COMMAND rake test) # Or whatever the command is.
时,它应该告诉您“FruitTests”是否失败或成功。
提醒 CMake通过程序的退出代码确定测试的成功或失败。默认情况下,Fortran程序没有退出代码(如果有,则始终为0)。当我使用Fruit和CMake进行Fortran测试时,我自己编写测试运行器并使用make test
内置子例程来确保将退出代码返回给CMake。我不确定Fruit的自动测试运行器创建者是否这样做;你必须自己验证。