AUnit中`Test_Caller`包的实用价值探究及两种测试实现方式的对比问询
AUnit中
Test_Caller包的实用价值探究及两种测试实现方式的对比问询 我在使用AUnit库的时候发现,实现相同的测试功能居然有两种不同的路子,想跟大家探讨下它们的区别和适用场景:
第一种方式是基于AUnit.Test_Cases.Test_Case类型:
- 先编写测试函数
- 用
AUnit.Test_Cases.Register_Tests函数逐个注册这些测试 - 最后通过
AUnit.Test_Suites.Add_Test把这个测试案例加入测试套件
我在这些地方见过这种写法:
- AUnit官方食谱示例
- Stack Overflow上的相关回答
- AdaYaml的单元测试代码
(有意思的是,AUnit官方仓库里反而找不到这种写法的例子)
第二种方式则是用AUnit.Test_Fixtures.Test_Fixture类型配合泛型包AUnit.Test_Caller:
- 同样先写好测试函数
- 借助
AUnit.Test_Caller.Create和AUnit.Test_Suites.Add_Test把测试加入套件
这种写法我在这些地方见过:
- AUnit官方食谱示例
- AUnit官方仓库里的示例代码
- json-ada的单元测试
目前我能看出来的唯一区别是:
用AUnit.Test_Cases.Test_Case的时候,可以重写Set_Up_Case、Set_Up、Tear_Down和Tear_Down_Case这几个函数;而用AUnit.Test_Fixtures.Test_Fixture的话,只能重写Set_Up和Tear_Down——毕竟后者的测试并没有被归在一个Test_Case组里。
除此之外,我实在看不出二者还有啥本质区别,甚至我见过的所有其中一种写法的例子,都能改成另一种(除了Set_Up_Case和Tear_Down_Case相关的部分)。
所以我想请教大家:AUnit.Test_Fixtures.Test_Fixture配合AUnit.Test_Caller这种组合到底有啥存在的意义?相比看起来更简单的AUnit.Test_Cases.Test_Case,为啥要选它?有没有什么场景是只能用其中一种实现,另一种做不到的?
备注:内容来源于stack exchange,提问作者dalex78
相关产品推荐
相关产品推荐

