问题:需要每天运行许多带Common Test套件的Erlang模块,以检查是否没有引入新的错误。对于那些引入错误的情况,我们希望在测试用例失败之前找到确切的位置和可能的程序状态。由于时间限制,无法使用dbg或其他调试工具进行调试。通常测试套件包含一些打印语句,允许以某种方式查明错误的位置,但它们的频率太低而无法生效。通常手动添加调试语句,但这需要时间。
建议的解决方案: 我想获取给定测试用例或整个Common Test套件的代码,并为每行测试代码创建至少包含行号和行内容的打印输出。例如代码:
L = [spawn(mod, loop, [0]) || _ <- lists:seq(1,10)],
[H|T] = L,
PidList = T ++ [self()],
我想将其转换为至少类似的东西:
io:format("Line ~p : ~p",[LineNumber1, LineContent1]),
L = [spawn(mod, loop, [0]) || _ <- lists:seq(1,10)],
io:format("Line ~p : ~p",[LineNumber2, LineContent2]),
[H|T] = L,
io:format("Line ~p : ~p",[LineNumber3, LineContent3]),
PidList = T ++ [self()],
理想情况下,它还会打印测试用例中每个变量的值。
问题: 这是获取有关测试代码中错误行踪的更多信息的正确方法吗?如果是这样,我应该使用哪种编程语言或工具来实现这种效果?