You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ada AUnit中Set_Up_Case与Tear_Down_Case执行异常问题咨询

问题原因

你遇到的现象本质是测试用例注册方式不符合AUnit的设计要求:AUnit的Set_Up_Case/Tear_Down_Case是绑定到单个测试类实例的生命周期的,如果你给每个测试方法都单独创建了一个测试类实例再添加到测试套件,每个实例自然会独立执行自己的Set_Up_Case和Tear_Down_Case,就会出现日志里每个单测试前后都执行这两个过程的情况。

正确调整方案
  • 不要为每个测试方法单独实例化测试类,创建一个统一的测试类实例,把同组所有测试方法都挂载到这个实例上
  • 重载方法时注意区分,不要误把Set_Up_Case/Tear_Down_Case写为Set_Up/Tear_Down的重载逻辑

以下是两种写法的对比示例:

-- 错误写法:每个测试方法单独实例化测试类,会触发多次Set_Up_Case/Tear_Down_Case
Suite.Add_Test (Caller.Create (My_Test_Create, "Test AAAA"));
Suite.Add_Test (Caller.Create (My_Test_Create, "Test BBBB"));
-- 正确写法:同一个实例挂载所有测试方法,仅触发一次整组的Set_Up_Case/Tear_Down_Case
Test_Instance : access My_Test_Case := new My_Test_Case;
Test_Instance.Add_Routine (Test_AAAA'Access, "Test AAAA");
Test_Instance.Add_Routine (Test_BBBB'Access, "Test BBBB");
Suite.Add_Test (Test_Instance);

调整后运行的日志会符合预期结构:

202X-XX-XX XX:XX:XX ----- Set_Up_Case -----
202X-XX-XX XX:XX:XX ----- Set_Up -----
202X-XX-XX XX:XX:XX ----- Starting Test AAAA -----
202X-XX-XX XX:XX:XX ----- Tear_Down -----
202X-XX-XX XX:XX:XX ----- Set_Up -----
202X-XX-XX XX:XX:XX ----- Starting Test BBBB -----
202X-XX-XX XX:XX:XX ----- Tear_Down -----
202X-XX-XX XX:XX:XX ----- Tear_Down_Case -----

内容的提问来源于stack exchange,提问作者isgoed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 04:45:01