我有一个关于 Tcl 的问题,我们正在使用 Tcl 为 c 和 c++ 应用程序编写一些测试用例。我看到一些Tcl测试用例是:
if {0} { #START:HELLO1
//some code here
}#END:HELLO1
if {0} { #START:HELLO2
//some code here
}#END:HELLO2
if {0} { #START:HELLO3
//some code here
}#END:HELLO3
这些代码是如何工作的? #START: 和#END: 是什么意思?以及为什么他们有索引,例如:
HELLO1 HELLO2 HELLO3
谁能帮我解决这个问题?
最佳答案
按照 Tcl 术语,这些测试看起来很奇怪。如果他们会这样读(带有额外的分号):
if {0} { #START:HELLO1
//some code here
};#END:HELLO1
然后它们将被屏蔽掉什么都不做的代码(字面意思;Tcl 不会尝试为其生成代码,就像 C 或 C++ 编译器不太可能为 if(0){ ...}
) 但是你得到的版本只是一个语法错误。大括号后面不应跟空格以外的任何内容(除非是特殊的 {*}
语法,它会扩展替换)。
也就是说,我希望测试代码看起来更像这样:
doATest "the test name" {
// Whatever makes the body of the test, in whatever language
}
doATest
可能会忽略基于某些逻辑的测试,但整个脚本将被遗忘。 (Tcl 自己的内置测试工具 — tcltest
包 — 遵循这种模式,带有一些额外的参数,用于控制诸如运行测试的条件和预期结果之类的事情。)
关于c++ - 关于tcl测试的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6685070/