我们在 Perl 中为不同的科学数据格式编写了解析器。最近我添加了一个测试套件,其中parser_*.t
包含每种格式和子格式的文件。
当然,解析器的 API 完全相同,只是从用于测试解析的示例文件中读取的数据不同。为了简化测试文件,我编写了一个 sub 来传递解析器对象和一个表示预期数据的哈希结构。看起来像
my $parser = new MyApp::Parser($file);
test_nested_objects = ($parser, {
property1 => "value",
property2 => 123,
subobject_accessor => {
property3 => "foobar",
}
}
子test_nested_objects
遍历散列并为散列中定义的所有属性运行测试,例如,如果subobject_accessor
可以调用,则返回一个对象并且该对象可以被调用property3
。
我检查了整个文件运行了多少测试*.t
并添加tests => 123
到所有*.t
文件中。现在,我对通用函数添加了一些检查,所有计划都是错误的。
如何让我的计划了解子测试?我想实现以下目标:
- 在运行它们之前给出的测试数量以查看进度
- 总数自动增加→编辑子时无需手动更改数字
- 运行证明时 sub 中的单个测试可见(在 sub 中隐藏测试并仅返回 0 或 1 是不可接受的,因为我真的需要知道解析的数据有什么问题)
我希望你能够明白。很抱歉这个长篇大论,但我认为如果没有一些背景知识,人们可能不会理解。