运行 NSPR 测试¶
NSPR 在 pr/tests
目录下有一个测试套件。
默认情况下,我们不会构建测试程序。在顶层目录中运行 make
仅构建 NSPR 库。要构建测试程序,需要切换到 pr/tests
目录并运行 make
。有关详细信息,请参阅 NSPR 构建说明。
要运行测试套件,请在测试程序二进制文件所在的目录中运行 shell 脚本 pr/tests/runtests.sh
,例如:
hg clone https://hg.mozilla.org/projects/nspr
cd nspr/
./configure
make
cd pr/tests
make runtests
测试套件的输出如下所示
NSPR Test Results - tests
BEGIN Mon Mar 12 11:44:41 PDT 2007
NSPR_TEST_LOGFILE /dev/null
Test Result
accept Passed
acceptread Passed
acceptreademu Passed
affinity Passed
alarm Passed
anonfm Passed
atomic Passed
attach Passed
bigfile Passed
cleanup Passed
cltsrv Passed
concur Passed
cvar Passed
cvar2 Passed
...
sprintf FAILED
...
timetest Passed
tpd Passed
udpsrv Passed
vercheck Passed
version Passed
writev Passed
xnotify Passed
zerolen Passed
END Mon Mar 12 11:55:47 PDT 2007
如何确定测试套件是否通过¶
如果所有测试的结果都报告为 **Passed**,则测试套件通过。
如果某些测试崩溃或结果报告为 **FAILED** 会怎样?这并不一定意味着测试套件失败,因为某些测试程序已知会失败。在修复测试失败之前,应针对 **相同平台上已知正常的 NSPR 版本** 运行 NSPR 测试,并将测试结果保存为基准。然后,可以通过将其测试结果与基准进行比较来检测新版本的回归。
已知问题¶
NSPR 测试套件的其他问题包括:
一些测试程序测试 NSPR 函数超时准确性。由于我们的操作系统都不是真正的实时操作系统,因此当测试机器负载过重时,此类测试程序可能会失败。
某些测试,例如
pipepong
和sockpong
,不应直接运行。它们将由其配套测试程序(例如pipeping
和sockping
)调用。如果您运行runtests.sh
,则这不是问题,因为runtests.sh
知道不要直接运行此类测试程序。