Java Jar build.gradle
模块:
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'junit:junit:4.12'
// rx
compile "io.reactivex.rxjava2:rxjava:2.0.4"
compile "io.reactivex.rxjava2:rxandroid:2.0.1"
}
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
这个Jar应该是一个用作单元测试android项目的实用程序库的库:
apply plugin: 'com.android.application'
android {
// ...
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// test
testCompile 'junit:junit:4.12'
testCompile project(':test-utils')
// ... other non-test dependencies here (including rx)
}
这包括:
testCompile project(':test-utils')
失败了:
错误:模块'my-android-app:test-utils:unspecified'取决于一个或 更多Android库但是一个罐子
这是因为RxAndroid
是Android .aar库。
我的测试实用程序模块中需要RxAndroid,因为模块提供的一个东西是junit MethodRule
,用于通过@Rule
注释和@Test
中的其他自定义注释来设置Rx调度程序方法
这是必需的,因为RxAndroid AndroidScheduler使用Android Handler
/ Looper
类,它们是Android框架的一部分,在单元测试中不可用。可以使用RxAndroidPlugins
替换Android计划程序。
这意味着我只需要RxAndroid AAR的JAR部分(rxandroid工件中的classes.jar
)。
有没有办法告诉gradle我只需要AAR的Java部分作为依赖?
我不认为手动从AAR中提取classes.jar
并将其作为依赖项包含在内的解决方案。这是一种解决方法。
这个Java测试库应该在我的项目中共享,我目前正在复制我的每个项目中的MethodRule
类,这远非理想。