我在为Bazel构建系统设置Robolectric时遇到了一些麻烦,主要是因为它需要依赖的数量 .
似乎没有一个JAR包含Robolectric及其所有依赖项 . 因此,我试过了两个:
-
使用自定义BUILD文件在我的WORKSPACE文件中创建
new_git_repository
规则,该文件编译来自Robolectric repo的Java源代码 . -
Downloading all JARs for Robolectric’s dependencies,然后将这些捆绑在
java_import
中,我的测试规则可以依赖它 .
在第一种情况下,我遇到了一些问题,试图从提供的Groovy类生成Java代码,但仍然需要手动包含其他几个依赖项 . 在第二种情况下,我遇到了Robolectric的 MavenDependencyResolver
无法在运行时找到某些依赖项的问题,这导致必须手动包含缺少的依赖项JAR文件 .
无论哪种方式,Bazel编译并运行Robolectric测试似乎有点麻烦 . 在Bazel构建系统中使用Robolectric有更好的方法吗?
2 回答
再次尝试这一点,我为Robolectric的依赖项下载所有JAR的方法对我有用 . 我最初缺少的部分是jvm标志,让Robolectric知道它应该在本地寻找它的依赖,而不是通过Maven . 我按照blog post zlalanne的步骤建议下载所有JAR,将它们移动到我的项目有权访问的目录中,然后为这些目录创建一个构建目标:
然后我创建了一个新规则,它将为标准java_test规则提供正确的Robolectric依赖项和jvm标志:
现在可以作为android_local_test rule使用 .