标签: aunit

使用 GNAT 测试时如何为函数添加第二个测试?

Gnat 测试的文档展示了如何生成线束和框架单元测试。它为目标项目中的每个公共函数创建一个单元测试,但如果我添加另一个单元测试,那么当我重新生成线束和骨架单元测试时,该单元测试就会被覆盖。

在gnattest 提供的简单示例项目中,如何添加另一个测试?我试过了:

(1) 在已有的测试函数中添加另一个 Assert 行。这可行,但不是好的做法;第一个失败的测试会阻止其他测试的运行。

(2)向obj/gnattest/harness/gnattest.xml添加函数定义然后重新生成测试不起作用;xml 文件在用于创建测试存根之前会重新生成。

(3) 通过以下更改手动将定义添加到测试/和利用/,这些更改会因重新生成测试而受到破坏。

将其添加到 obj/gnattest/tests/simple-test_data-tests.ads:

   procedure Test_Inc2_4f8b9f (Gnattest_T : in out Test);
Run Code Online (Sandbox Code Playgroud)

将其添加到 obj/gnattest/tests/simple-test_data-tests.adb:

--  begin read only
   procedure Test_Inc2 (Gnattest_T : in out Test);
   procedure Test_Inc2_4f8b9f (Gnattest_T : in out Test) renames Test_Inc2;
--  id:2.2/4f8b9f38b0ce8c74/Inc/1/0/
   procedure Test_Inc2 (Gnattest_T : in out Test) is
   --  simple.ads:7:4:Inc
--  end read only
   begin
     Assert (Inc(2) = 2, "this test should fail");
--  begin read only
   end Test_Inc2;
-- …
Run Code Online (Sandbox Code Playgroud)

unit-testing ada gnat aunit

5
推荐指数
1
解决办法
585
查看次数

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

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

有没有办法将函数和过程标记为“需要测试”?

ada gnat gnat-gps aunit

5
推荐指数
1
解决办法
271
查看次数

为每个测试调用 Ada AUnit 过程 Set_Up_Case 和 Tear_Down_Case

我正在基于 aunit 的现有套件中的 Ada 应用程序中进行单元测试。根据他们的文档和代码,程序:Set_Up_Case 和 Tear_Down_Case 应该只在测试例程集之前运行。但是,当我运行单元测试(特定类或 SmokeTests)时,我发现它们在每次测试之前和之后运行。剥离输出:

2021-07-05 15:05:55 ----- Set_Up_Case -----                                                                             
2021-07-05 15:05:55 ----- Set_Up -----                                                                                                                                                                
2021-07-05 15:05:58 ----- Starting Test AAAA -----                                                              
2021-07-05 15:06:07 ----- Tear_Down -----                                                                               
2021-07-05 15:06:07 ----- Tear_Down_Case -----                                                               
           
2021-07-05 15:06:07 ----- Set_Up_Case -----                                                                             
2021-07-05 15:06:07 ----- Set_Up -----                                                                                                                                                                 
2021-07-05 15:06:10 ----- Starting Test BBBB  -----                                                                  
2021-07-05 15:06:34 ----- Tear_Down -----                                                                               
2021-07-05 15:06:34 ----- Tear_Down_Case -----  
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能得到记录的行为呢?

unit-testing ada aunit

3
推荐指数
1
解决办法
196
查看次数

Ada:重定向到stdout时省略换行符(测试Put)

我正在尝试用简单的方法编写测试Ada.Text_IO.Put.为简单起见,这是一个我想测试的组合方法:

procedure Say_Something is
begin
   Put("Something.");
end Say_Something;
Run Code Online (Sandbox Code Playgroud)

在我的AUnit测试中,我有:

procedure Test_Put (T : in out Test) is
   pragma Unreferenced (T);
   use Ada.Text_IO;

   Stdout : constant File_Type := Standard_Output;
   Put_File_Name : constant String := "say_something_test.txt";
   Put_File : File_Type;

   Expected : constant String := "Something.";
begin
   --  Create the output file and redirect output
   Create (Put_File, Append_File, Put_File_Name);
   Set_Output (Put_File);

   Say_Something;

   --  Redirect output to stdout and close the file
   Set_Output (Stdout);
   Close (Put_File);

   --  Read file
   declare
      File_Size : …
Run Code Online (Sandbox Code Playgroud)

unit-testing ada aunit

1
推荐指数
1
解决办法
534
查看次数

标签 统计

ada ×4

aunit ×4

unit-testing ×3

gnat ×2

gnat-gps ×1