我刚接触TCL,我想知道以下代码片段的作用。
我在网上搜索,找不到任何明确的解释,所以我希望有人可以帮助我解决这个问题:
-match glob -result {usage*}
举例说明文件中适合放置的位置:
testName{A description
} -setup{
} -body{
}-match glob -result {usage*}
答案 0 :(得分:0)
该特定位是tcltest::test
命令的一对选项。 -result {usage*}
将测试脚本的预期结果字符串设置为usage*
(在这种情况下,它可以用双引号引起来,甚至可以作为裸词使用)。 -match glob
将结果匹配规则设置为通配符,这与您在Shell或Tcl glob
或{{1 }}命令。默认的匹配规则是精确的字符串相等性,但是在这种情况下,如果前五个字符为string match
,而其余的都不重要,则测试会要求结果匹配(usage
全局模式的标准解释)
在使用空格(和换行符)时,您需要格外小心:它们在Tcl脚本中非常重要,因为它们用于相互分隔单词(和命令)。
这是一个更完整的版本:
usage*
在这种情况下,我们还指定了许多其他选项(前两个参数很明显:在测试套件中易于搜索的名称以及易于理解的简短描述正在测试)。 不是,但是为了使您可以尝试在以下方面理解它们:
test testName "A description" -constraints knownBug -setup {
# Do the setting up for the test
} -body {
# Do the things that actually produce the result
} -cleanup {
# Tear down the things that were set up before
} -returnCodes error -match glob -result {usage*}
:用于指定产生比较结果的脚本。-body
:用于控制何时不运行测试。有时,已知一项测试由于无法报告的原因而无法正常工作(例如,您在Windows上运行,但需要MacOS正常运行,或者它需要能够访问目前无法维护的服务) 。约束系统是唯一推荐的跳过测试的方法,因为这样您可以更好地了解被忽略的内容。-constraints
:用于将系统置于可以运行测试的状态。有些测试需要这样做,有些则不需要。-setup
:用于在测试后清理系统。-cleanup
:这使您可以声明除了脚本的常规退出之外还需要其他内容:期望的-returnCodes
使结果与错误消息相匹配。我已经在上面描述了error
和-result
。还有-match
和-output
用于分别检查对stdout和stderr写入的内容的检查,但是我更愿意编写测试以不使用它们。