运行 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 测试套件的其他问题包括:

  1. 一些测试程序测试 NSPR 函数超时准确性。由于我们的操作系统都不是真正的实时操作系统,因此当测试机器负载过重时,此类测试程序可能会失败。

  2. 某些测试,例如 pipepongsockpong,不应直接运行。它们将由其配套测试程序(例如 pipepingsockping)调用。如果您运行 runtests.sh,则这不是问题,因为 runtests.sh 知道不要直接运行此类测试程序。