我添加了一个简单的 JavaScript 测试/src/chrome/test/data/webui/
并将文件包含在/src/chrome/chrome_tests.gypi
.
我是这样建造的:ninja -C out/Debug browser_tests
. 不过这需要一段时间。有没有办法只重建我的测试,而不构建所有其他浏览器测试?
我添加了一个简单的 JavaScript 测试/src/chrome/test/data/webui/
并将文件包含在/src/chrome/chrome_tests.gypi
.
我是这样建造的:ninja -C out/Debug browser_tests
. 不过这需要一段时间。有没有办法只重建我的测试,而不构建所有其他浏览器测试?
browser_tests 是编译这些测试的唯一可执行目标,因此即使您在单个测试中执行更改,您也需要在任何情况下使用它。但是您可能想尝试共享库编译来提高构建速度。为此,在export GYP_DEFINES='component=shared_library'
重新./build/gyp_chromium
编译之前。
注意:此答案不适用于 webui 测试(它们不依赖于test_data_dir_
. 此外,它仅与 Linux 相关。
一些测试文件没有编译成browser_tests
. 对于这些情况,只需将CR_SOURCE_ROOT
环境变量设置为 Chromium 源目录,例如(如果您的 Chromium 源文件位于~/chromium/src
)
CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests
当我试图弄清楚为什么扩展测试没有运行时,我发现了这一点。我首先在源代码中查找错误消息:
扩展错误:无法从“”加载扩展。清单文件丢失或无法读取。
使用gdb调试后,我发现应该加载的测试扩展ExtensionBrowserTest::LoadExtensionWithFlags
没有加载,因为路径无效。path
以某种方式设置为"extensions/api_test/webrequest"
,并且由于这不是绝对路径,因此被UnpackedInstaller::GetAbsolutePath
清除extension_path_ = base::MakeAbsoluteFilePath(extension_path_);
。
因此,Chromium 尝试从位置“”(空字符串)加载扩展,这显然失败了。
最终,我找到了 的原因test_data_dir_
,它在 初始化DIR_TEST_DATA
,而它又是从 导出的DIR_SOURCE_ROOT
,而它又是从CR_SOURCE_ROOT
环境变量中读取的。使用以下命令,我的测试再次运行,并且无需重新编译即可更新扩展测试。
CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests