Integration testing 在不重建所有浏览器测试的情况下构建ChromiumWebUI测试

Integration testing 在不重建所有浏览器测试的情况下构建ChromiumWebUI测试,integration-testing,chromium,ninja,Integration Testing,Chromium,Ninja,我在/src/chrome/test/data/webui/中添加了一个简单的JavaScript测试,并将该文件包含在/src/chrome/chrome\u tests.gypi中 我是这样构建的:ninja-cout/Debug browser\u tests。不过这需要一段时间。是否有一种方法可以仅重建我的测试,而不构建所有其他浏览器测试?浏览器测试是编译这些测试的唯一可执行目标,因此在任何情况下都需要使用它,即使在单个测试中执行更改。但是您可能希望尝试共享库编译来提高构建的速度。为此,

我在
/src/chrome/test/data/webui/
中添加了一个简单的JavaScript测试,并将该文件包含在
/src/chrome/chrome\u tests.gypi


我是这样构建的:
ninja-cout/Debug browser\u tests
。不过这需要一段时间。是否有一种方法可以仅重建我的测试,而不构建所有其他浏览器测试?

浏览器测试是编译这些测试的唯一可执行目标,因此在任何情况下都需要使用它,即使在单个测试中执行更改。但是您可能希望尝试共享库编译来提高构建的速度。为此,只需导出GYP_DEFINES='component=shared_library',然后在重新编译之前导出GYP_cromium。

注意:这个答案不适用于webui测试(它们不依赖于
测试数据目录)。此外,它只与Linux相关

CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests
有些测试文件没有编译到
浏览器\u测试中
。对于这些情况,只需将
CR\u SOURCE\u ROOT
环境变量设置为Chromium SOURCE目录,例如(如果您的Chromium源文件位于
~/Chromium/src

当我试图找出扩展测试没有运行的原因时,我发现了这一点。我首先在源代码中查找错误消息:

扩展名错误:无法从“”加载扩展名。清单文件丢失或不可读

在使用gdb进行一些调试之后,我发现应该加载的测试扩展没有加载,因为路径无效。
path
以某种方式被设置为
“extensions/api\u test/webrequest”
,并且因为这不是绝对路径,所以在
extension\u path=base::MakeAbsoluteFilePath中被清除(扩展路径);

因此,Chromium尝试从位置“”(空字符串)加载扩展,这显然失败了

最终,我找到了
test\u data\u dir\uu
的原因,它在初始化,依次是,依次是。通过以下命令,我的测试再次运行,并且我能够在不重新编译的情况下更新扩展测试

CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests

谢谢!前几天我找到了这个解决方案,但还没来得及在这里提及。我是这样做的
build/gyp\u chromiu-D component=shared\u library
,我想这只是做同样事情的一种稍微不同的方式。