gpt4 book ai didi

testing - 带有水果测试的 Cmake

转载 作者:行者123 更新时间:2023-11-28 21:31:55 25 4
gpt4 key购买 nike

我有一个使用 fruit 进行测试的项目(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

还有我的测试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++ 完成的,然后使用可执行的测试文件文件。

谢谢!-敏德

最佳答案

您可以按原样运行您编写的测试,您只需要告诉 CMake 如何运行它们。这就是 ADD_TESTCOMMAND 参数的用途。

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 的自动测试运行程序创建器是否这样做;你必须自己验证这一点。

关于testing - 带有水果测试的 Cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17588239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com