Niq*_*iqo 5 android maven jenkins robolectric
我使用Robolectric 2.x(我实际上使用2.1)与使用APKLIB的Android Maven项目有问题.
它接缝Robolectric 2.x期望在project.properties中引用Android库(此文件由Intellij或Eclipse自动填充).
在开发环境中使用Maven时工作正常,但是如果我想在CI服务器(Jenkins)上构建我的Android Maven项目,我的构建失败了:
java.lang.RuntimeException: huh? can't find parent for StyleData{name='Theme_Abs_cs', parent='@style/Theme_Sherlock_Light'}
显然Robolectric找不到Android库依赖项.
有没有人使用Android APKLIB + Jenkins + Maven + Robolectric 2.x进行配置?
小智 8
以下是我们在Square处理这个问题的方法... android-maven-plugin解压缩你的APK依赖关系target/unpack,然后我们扩展RobolectricTestRunner将它们拉进去.有点笨重但我们想出的最好.
public class SquareTestRunner extends RobolectricTestRunner {
private static boolean alreadyRegisteredAbs = false;
public SquareTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
}
@Override protected AndroidManifest createAppManifest(File baseDir) {
return new MavenAndroidManifest(Fs.newFile(new File(".")));
}
public static class MavenAndroidManifest extends AndroidManifest {
public MavenAndroidManifest(FsFile baseDir) {
super(baseDir);
}
@Override protected List<FsFile> findLibraries() {
// Try unpack folder from maven.
FsFile unpack = getBaseDir().join("target/unpack/apklibs");
if (unpack.exists()) {
FsFile[] libs = unpack.listFiles();
if (libs != null) {
return asList(libs);
}
}
return emptyList();
}
@Override protected AndroidManifest createLibraryAndroidManifest(FsFile libraryBaseDir) {
return new MavenAndroidManifest(libraryBaseDir);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |