当我运行ANY测试时,会收到相同的消息。这是一个示例测试:

package require tcltest
namespace import -force ::tcltest::*
test foo-1.1 {save 1 in variable name foo} {} {
    set foo 1
} {1}


我得到以下输出:

WARNING: unknown option -run: should be one of -asidefromdir, -constraints, -debug, -errfile, -file, -limitconstraints, -load, -loadfile, -match, -notfile, -outfile, -preservecore, -relateddir, -singleproc, -skip, -testdir, -tmpdir, or -verbose


我尝试了多种测试,但似乎没有任何效果。有谁知道如何使它工作?

更新#1:

上面的错误是我的错,这是因为它在我的脚本中运行。但是,如果我在命令行上运行以下命令,则不会得到任何输出:

[root@server1 ~]$ tcl
tcl>package require tcltest
2.3.3
tcl>namespace import -force ::tcltest::*
tcl>test foo-1.1 {save 1 in variable name foo} {expr 1+1} {2}
tcl>echo [test foo-1.1 {save 1 in variable name foo} {expr 1+1} {2}]

tcl>


如何获得通过或失败的输出?

最佳答案

您不会从test命令本身获得任何输出(只要测试通过,如示例中所示:如果失败,该命令将显示“测试用例的内容” /“实际结果” /“预期结果” ”摘要;另请参见下面有关配置的说明)。测试统计信息将在内部保存:您可以使用cleanupTests命令来打印总数/通过/跳过/失败的数字(该命令还会重置计数器并进行一些清理)。

(运行runAllTests时,它将在子进程中运行测试文件,拦截每个文件cleanupTests的输出,并将它们加起来总计。)

测试期间收集的内部统计信息可用于未记录的AFACT名称空间变量,例如::tcltest::numTests。如果您想自己使用统计信息,则可以在调用cleanupTests(例如,

parray ::tcltest::numTests
array set myTestData [array get ::tcltest::numTests]
set passed $::tcltest::numTests(Passed)


查看库中tcltest的源代码,以查看可用的变量。

test命令的输出量是可配置的,即使将p / pass添加到-verbose选项,即使测试通过也可以获得输出。此选项还可以使您在发生故障等情况下获得较少的输出。

您还可以创建一个名为::tcltest::ReportToMaster的命令,如果存在,将由cleanupTests调用,并将相关数据作为参数。这样做似乎抑制了统计信息的输出,并且至少抑制了大多数重置和清除工作。 (我对这种方法的研究还不算太深。)要知道,将其弄乱比解决问题更有可能造成麻烦,但是,如果您要基于tcltest编写自己的测试软件,您可能仍想看它。

哦,请对test命令使用较新的语法。它比较冗长,但是如果您开始使用它,稍后会感谢您。

强制性但无用的(在这种情况下)文档链接:tcltest

10-02 02:54