在开始编写单元测试之前,我一直很喜欢使用 gradle。我目前遇到的问题是我的 gradle 构建在运行单元测试时找不到 ActionBarPullToRefresh 布局。我的gradle构建文件如下
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
sourceSets {
unitTest {
java.srcDir file('src/main/java/com/smartsocialmedia/tests')
resources.srcDir file('src/main/res/com/smartsocialmedia/tests')
java.srcDirs = ['src/main/java/com/smartsocialmedia']
}
}
configurations {
unitTestCompile.extendsFrom runtime
unitTestRuntime.extendsFrom unitTestCompile
}
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.0'
lintOptions {
checkReleaseBuilds false
abortOnError false
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 7
versionName "1.0.5"
testPackageName "com.smartsocialmedia.tests"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
//testHandlingProfiling true
testFunctionalTest true
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.0'
compile 'org.apache.httpcomponents:httpmime:4.1.2@jar'
compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
compile files('libs/universal-image-loader-1.9.1-with-sources.jar')
repositories {
mavenCentral()
}
unitTestCompile files("$project.buildDir/classes/release")
unitTestCompile 'junit:junit:4.10'
unitTestCompile 'org.robolectric:robolectric:2.1.+'
unitTestCompile 'com.google.android:android:4.0.1.2'
unitTestCompile 'com.google.android:android-test:4.1.1.4'
unitTestCompile files('libs/universal-image-loader-1.9.1-with-sources.jar')
unitTestCompile 'org.apache.httpcomponents:httpmime:4.1.2@jar'
unitTestCompile 'com.android.support:support-v4:18.0.0'
unitTestCompile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
}
task unitTest(type:Test, dependsOn: assemble) {
testClassesDir = project.sourceSets.unitTest.output.classesDir
classpath = project.sourceSets.unitTest.runtimeClasspath
}
check.dependsOn unitTest
基本上我想做的就是拥有这个 https://github.com/chrisbanes/ActionBar-PullToRefresh我的单元测试中包含的库。
最佳答案
我想测试“module-a”中的一个类,该类从另一个模块中导入 module-b
.我无法在“module-a”中运行测试,因为它引用了仅适用于 module-b
的导入所以我把类(class)搬到了module-b
.
引用module-a
来自 module-b
我在 build.gradle
中这样做了的 module-b
sourceSets {
test.java.srcDirs = [
"${rootProject.getRootDir()}/path/to/module-a",
"${rootProject.getRootDir()}/path/to/module-b"
]
}
在那之后我有一个错误说我应该检查类路径和 .jar 库 module-b
取决于没有编译。
所以在module-b
的build.gradle中, 在 dependencies{..}
下
api fileTree(dir: 'libs', include: ['*.jar'])
注意 api
, 它是 implementation
但它没有用。
希望这对某人有帮助!
关于Android gradle单元测试找不到库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639383/