c++ - 关于tcl测试的问题

标签 c++ c testing tcl

我有一个关于 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/

相关文章:

C语言: Copying strings one by one to an array

c - 第二个 getpwuid 调用似乎覆盖了旧值

c++ - 永远不会在 gmock 中调用 C 字符串

c++ - C++ 中变量的减号?

c++ - 预安装库中大写的常用数据类型(Int、Char 等)

c - 未定义对 'mysql_get_client_info' Eclipse Centos 6 的引用

c# - 发生异常 "System.InvalidProgramException: JIT Compiler encountered an internal limitation "

c++ - 命令在终端中工作,但不是通过 QProcess

c++ - OpenMP 第一个内核比第二个内核慢得多

c++ - 如何测试我的软件是否能正确使用 UTF-16?