我如何指定函数或过程 GNATTest 应该自动生成一个测试用例

How can I specify functions or procedures GNATTest should auomatically generate a test case for

我正在处理一个巨大的代码包(主要是用 ada 编写的),这是一团糟。到目前为止,没有应用任何单元测试,并且对于所有现有代码,不得实施单元测试。但是我们的团队决定,所有新代码都应该与测试一起实施。在 GPS 中,可以让 GNATtest 自动为项目中的所有功能和程序生成测试程序。但是正如所写,我们必须从这个自动生成中排除所有旧代码。

有没有办法将函数和过程标记为 "need to be tested"?

您可以通过添加参数 --test-case-only 指示 gnattest 仅为选定的过程或函数创建测试。我不确定如何在 GPS 中设置它。终端中的整个命令可以看起来是:

gnattest -P yourproject.gpr --test-case-only

您还可以将此参数添加到您的 .gpr 文件中:

    package GnatTest is
       for GnatTest_Switches use ("--test-case-only");
    end GnatTest;

设置时,必须添加aspect(或pragma)Test_Case。例如:

procedure Something with
 Test_Case => ("Test_Something", Robustness);

您可以在 GNAT Documentation 中找到有关此 aspect/pragma 的更多信息。 Link 是 pragma 定义,但 aspect 的工作方式完全相同。