当我尝试执行测试时,我无法使用Robolectric执行测试:
./gradlew test我得到以下例外:
com.Makeupalley.test.HomeRobolectricTest > initializationError FAILED
java.lang.NoClassDefFoundError
Caused by: java.lang.ClassNotFoundException
java.lang.NoClassDefFoundError: android/app/Activity
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
.
.
.
Caused by: java.lang.ClassNotFoundException: android.app.Activity
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)测试失败,任何断言都是这样:assertTrue(true).
这是我的build.gradle:
buildscript {
repositories {
mavenCentral()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
classpath 'org.robolectric:robolectric-gradle-plugin:0.12.+'
}
}
...
dependencies {
compile('junit:junit:4.11') {
exclude module: 'hamcrest-core'
}
compile('org.robolectric:robolectric:2.3') {
exclude module: 'classworlds'
exclude module: 'commons-logging'
exclude module: 'httpclient'
...
}
}测试文件:
@Config(emulateSdk = 18)
@RunWith(RobolectricTestRunner.class)
public class HomeRobolectricTest {
private TestActivity activity;
public HomeRobolectricTest(){}
@Before
public void setup() {
activity = Robolectric.buildActivity(TestActivity.class).create().get();
}
@Test
public void testInstanceActivity() throws Exception {
assertTrue(true);
}
...
}有人能帮我给我一些指引吗?
如果您需要更多的信息或所有build.gradle文件,我可以张贴它。
build.gradle文件:https://gist.github.com/anonymous/d0f0bac71a0fb76f8454
谢谢
更新- Android部分
android {
compileSdkVersion 15
buildToolsVersion '19.1.0'
defaultConfig {
minSdkVersion 10
targetSdkVersion 15
versionCode 45
versionName "1.4.210"
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
buildTypes {
release {
runProguard true
proguardFile 'proguard-project.txt'
}
debug {
runProguard false
testCoverageEnabled = true
}
}
signingConfigs {
}
packagingOptions {
exclude 'META-INF/INDEX.LIST'
exclude 'META-INF/INDEX'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
sourceSets {
androidTest {
setRoot('src/test')
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}发布于 2015-03-10 10:00:16
自从android插件版本1.1.0以来,就有了对单元测试的支持,所以您可以在gradle文件中使用testCompile。用设置> gradle >实验性打开它,并更新gradle插件版本:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}发布于 2015-07-11 12:18:46
我有以下设置:
app/build.gradle
dependencies {
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
testCompile "org.robolectric:robolectric:2.4"
}在2.5级以下,它对我也不起作用。自从几天前他们发布了一个新版本2.5之后,我尝试了一下,它确实为我解决了这个问题。
gradle/wrapper/gradle-wrapper.prooperties
#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.ziphttps://stackoverflow.com/questions/25422873
复制相似问题