- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
documentation for Gnat test 展示了如何生成一个线束和骨架单元测试。它为目标项目中的每个公共(public)函数创建一个单元测试,但是如果我添加另一个单元测试,当我重新生成线束和骨架单元测试时,它会被覆盖。
在 simple example gnattest 提供的项目,如何添加另一个测试?我试过了:
(1) 将另一个 Assert 行添加到已经存在的测试函数中。这行得通,但不是好的做法;第一个失败的测试会阻止其他测试运行。
(2) 在obj/gnattest/harness/gnattest.xml中添加函数定义然后regenerating the tests不工作; xml 文件在用于创建测试 stub 之前重新生成。
(3) 通过以下更改手动将定义添加到测试/和利用/,这些更改会因重新生成测试而受到破坏。
将此添加到 obj/gnattest/tests/simple-test_data-tests.ads:
procedure Test_Inc2_4f8b9f (Gnattest_T : in out Test);
-- 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;
-- end read only
Case_1_1_Test_Inc2_4f8b9f : aliased Runner_1.Test_Case;
Runner_1.Create
(Case_1_1_Test_Inc2_4f8b9f,
"simple2.ads:7:4:",
Test_Inc2_4f8b9f'Access);
Result.Add_Test (Case_1_1_Test_Inc2_4f8b9f'Access);
gprbuild -Pobj/gnattest/harness/test_driver.gpr
./obj/gnattest/harness/test_runner.exe`.
最佳答案
如果您不介意修改测试主题(并且在此过程中失去一点可移植性......),那么有一个 GNAT 特定的编译指示或方面(Ada 2012)
我将首先展示 pragma 的语法,其余示例将使用方面语法:
function Foo(Bar : in Integer) return Integer;
pragma Test_Case("Test 1", Robustness);
function Foo(Bar : in Integer) return Integer
with Test_Case => ("Test 1", Robustness);
function Foo(Bar : in Integer) return Integer
with Test_Case => (Name => "Test 1", Mode => Robustness);
Mode => Nominal
(见下文)或两个可选参数中的任何一个,
Requires
和
Ensures
:
function Foo(Bar : in Integer) return Integer
with Test_Case => (Name => "Test 1",
Mode => Robustness,
Requires => Bar < 10,
Ensures => Foo'Result > 15);
Requires
充当特定于测试用例的前提条件,
Ensures
充当特定于测试用例的后置条件,
Pre
或
Post
-测试对象的条件,生成的代码也可以检查这些,如果你指定
Mode => Nominal
. (使用
Mode => Robustness
时它们将被忽略)。
function Foo(Bar : in Integer) return Integer
with Pre => Bar > 5,
Post => Foo'Result < 10,
Test_Case => (Name => "Test 1",
Mode => Nominal,
Requires => Bar < 10,
Ensures => Foo'Result > 15);
Test_Case
:
function Foo(Bar : in Integer) return Integer
with Test_Case => ("Test 1", Robustness),
Test_Case => ("High Bar", Robustness),
Test_Case => ("Low Bar", Robustness),
Test_Case => ("Candy Bar", Robustness);
关于unit-testing - 使用 GNAT 测试时如何为函数添加第二个测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52310259/
我正在使用 GNAT Programming Studio 更新一些 ada 文件。我有一个样式检查,对于这些旧文件,它会产生数以千计的警告。有用的是 GPS 在位置 View 中有一个小的自动修复“
我必须从C++客户端接收UDP数据报。客户端可以正常工作,并将数据报发送到我在其中编译此代码的ip。数据报的大小为800Bytes。当我发送数据报时,读取过程被阻止。我已经根据以下示例创建了此代码:h
有没有办法用 GNAT.Sockets 获取 MAC 地址? 我已经多次阅读 .ads 文件,但没有看到任何看起来会产生 MAC 地址的内容。 Ads here 最佳答案 在谷歌搜索您的问题时,我找到
我有一个包含多个构建配置的 Gnat/Gprbuild 项目。我有一个主要源文件和一个辅助广告文件,其中主要源文件包括: with Secondary_File; use Secondary_File
编译失败并显示以下 F6 声明: type F3 is delta 2.0**(-4) range 0.0 .. ((2.0**8)-1.0)*2.0**(-4); -- byte 16#f.
我正在尝试使用 GNAT 95 在我的计算机上使用 GNAT-GPL 2015 bundle 编译运行 CENTOS 7 64 位的程序.我收到如下所示的编译器消息: gprbuild: encaps
我需要一个将在后台静默运行但仍与当前用户的桌面交互且不是服务的应用程序。 我希望应用程序在不生成标准输出控制台的情况下启动。 在C中,好像是用Kernel32.dll中的FreeConsole完成的,
我想知道 GNAT 支持哪些 CPU 架构,尤其是在嵌入式领域。 Gnu C 编译器支持的每个目标是否也自动支持 Ada? 最佳答案 AdaCore 的 Embedded Development Pa
在我正在处理的这个多语言 GPRBuild 项目中,我有一些 C++ 库文件 (*.a) 我需要链接到我的可执行文件中。是否有一个 gpr 属性来告诉它链接什么或无论如何将 -l -L 开关传递给链接
所以我正在开发一个 Ada 2012 库,它不应该从默认池中执行分配;所有这些都应该使用用户指定的存储池。 我正在使用一些预定义的包,其中一些显然不遵守规则:例如无限期容器。我想确定我没有使用我不应该
此(声明)代码引发存储错误: type Vector is array (Integer range <>) of Integer; type Array_Starting_At_One (Max :
我有 Ada 程序,可以使用 GNAT - GPS 完美运行和编译。当我运行其 exe 文件并提供用户输入时,该 exe 会立即关闭,而不是说“按任意键继续”。 我在网上搜索了很多,但我只找到了与使用
为了了解 Ada 程序编译背后的过程(不诉诸使用 gpr ),我决定手动编译我的一个项目。为了编译程序,我在每个 .adb 上运行以下命令文件(但是不是手动): $ gcc -c src/.adb -
所以我一直在玩 Ada 一段时间,它是一种很棒的语言,但我不知道如何使可执行文件更小(我在 Windows 上使用 GNAT 5.3)。目前,hello world 的文件大小约为 800 kb。当我
为了了解 Ada 程序编译背后的过程(不诉诸使用 gpr ),我决定手动编译我的一个项目。为了编译程序,我在每个 .adb 上运行以下命令文件(但是不是手动): $ gcc -c src/.adb -
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我相信我已经发现并修复了 AUnit 中的一个错误,它是 Ada 的 GNAT 编译器工具的一部分。 向 AdaCore 提交 GNAT 工具社区版本错误的最佳方式是什么? 以下程序使用当前版本的编译
这是一个聊天客户端/服务器程序。要进行广播,我必须保存每个连接的客户端,然后写入每个客户端,对吗?管理客户的最佳实践是什么? GNAT.Sockets.Accept_Socket(
documentation for Gnat test 展示了如何生成一个线束和骨架单元测试。它为目标项目中的每个公共(public)函数创建一个单元测试,但是如果我添加另一个单元测试,当我重新生成线
我正在 Ada 中试验 IP 多播,但似乎没有收到任何发送到多播组的流量。不知何故,我似乎无法让应用程序获取传入的数据包。 我可以验证(使用 Wireshark)多播加入是从我的计算机发送的,而且我还
我是一名优秀的程序员,十分优秀!