测试
V8 包含一个测试框架,允许您测试引擎。该框架允许您运行我们自己的测试套件(包含在源代码中)和其他测试套件,例如 Test262 测试套件。
运行 V8 测试 #
使用 gm
,您只需在任何构建目标后附加 .check
即可运行其测试,例如:
gm x64.release.check
gm x64.optdebug.check # recommended: reasonably fast, with DCHECKs.
gm ia32.check
gm release.check
gm check # builds and tests all default platforms
gm
会自动构建运行测试所需的任何目标。您也可以限制要运行的测试
gm x64.release test262
gm x64.debug mjsunit/regress/regress-123
如果您已经构建了 V8,您可以手动运行测试
tools/run-tests.py --outdir=out/ia32.release
同样,您可以指定要运行的测试
tools/run-tests.py --outdir=ia32.release cctest/test-heap/SymbolTable/* mjsunit/delete-in-eval
使用 --help
运行脚本以了解其其他选项。
运行更多测试 #
要运行的默认测试集不包括所有可用测试。您可以在 gm
或 run-tests.py
的命令行中指定其他测试套件
benchmarks
(仅用于正确性;不会生成基准测试结果!)mozilla
test262
webkit
运行微基准测试 #
在 test/js-perf-test
下,我们有微基准测试来跟踪功能性能。有一个专门的运行器用于这些测试:tools/run_perf.py
。像这样运行它们
tools/run_perf.py --arch x64 --binary-override-path out/x64.release/d8 test/js-perf-test/JSTests.json
如果您不想运行所有 JSTests
,您可以提供一个 filter
参数
tools/run_perf.py --arch x64 --binary-override-path out/x64.release/d8 --filter JSTests/TypedArrays test/js-perf-test/JSTests.json
更新检查器测试预期 #
更新测试后,您可能需要为其重新生成预期文件。您可以通过运行以下命令来实现
tools/run-tests.py --regenerate-expected-files --outdir=ia32.release inspector/debugger/set-instrumentation-breakpoint
这在您想了解测试输出如何改变时也很有用。首先使用上面的命令重新生成预期文件,然后检查与
git diff
更新字节码预期(重新基线) #
有时字节码预期可能会发生变化,导致 cctest
失败。要更新黄金文件,请通过运行以下命令构建 test/cctest/generate-bytecode-expectations
gm x64.release generate-bytecode-expectations
…然后通过将 --rebaseline
标志传递给生成的二进制文件来更新默认的输入集
out/x64.release/generate-bytecode-expectations --rebaseline
更新后的黄金文件现在位于 test/cctest/interpreter/bytecode_expectations/
中。
添加新的字节码预期测试 #
在
cctest/interpreter/test-bytecode-generator.cc
中添加一个新的测试用例,并指定一个具有相同测试名称的黄金文件。构建
generate-bytecode-expectations
gm x64.release generate-bytecode-expectations
运行
out/x64.release/generate-bytecode-expectations --raw-js testcase.js --output=test/cctest/interpreter/bytecode-expectations/testname.golden
其中
testcase.js
包含添加到test-bytecode-generator.cc
的 JavaScript 测试用例,testname
是在test-bytecode-generator.cc
中定义的测试名称。