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
相关产品推荐
相关产品推荐

