Robolectric测试未运行(Android)

时间:2014-11-06 08:38:43

标签: android unit-testing robolectric robolectric-gradle-plugin

我已经成功安装了Robolectric,但我的测试根本没有运行。没有错误,也没有结果。我错过了什么?

运行./gradlew测试后,没有测试报告,但是测试类是正确生成的

我的build.gradle:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/repo' }
    }
    dependencies {
        ...
        classpath 'io.fabric.tools:gradle:1.+'
        classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+'
    }
}    
allprojects {
    repositories {
        mavenCentral()
    }
}
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'idea'
apply plugin: 'hugo'
apply plugin: 'android'
apply plugin: 'robolectric'

idea {
    module {
        downloadJavadoc = true
        downloadSources = true
        testOutputDir = file('build/test-classes/debug')
    }
}    
repositories {
    mavenCentral()
    maven { url 'https://repo.commonsware.com.s3.amazonaws.com' }
    flatDir name: 'localRepository', dirs: 'libs-aar'
    maven { url 'https://maven.fabric.io/repo' }
}    
dependencies {
    repositories {
        mavenCentral()
    }
    ...    
    // Espresso
    androidTestCompile files('lib/espresso-1.1.jar', 'lib/testrunner-1.1.jar', 'lib/testrunner-runtime-1.1.jar')
    androidTestCompile 'com.google.guava:guava:14.0.1'
    androidTestCompile 'com.squareup.dagger:dagger:1.1.0'
    androidTestCompile 'org.hamcrest:hamcrest-integration:1.1'
    androidTestCompile 'org.hamcrest:hamcrest-core:1.1'
    androidTestCompile 'org.hamcrest:hamcrest-library:1.1'    
    androidTestCompile('junit:junit:4.11') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile('org.robolectric:robolectric:2.3') {
        exclude module: 'classworlds'
        exclude module: 'commons-logging'
        exclude module: 'httpclient'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-provider-api'
    }
    androidTestCompile 'com.squareup:fest-android:1.0.+'
}    
android {
    compileSdkVersion 19
    buildToolsVersion '19.1.0'
    useOldManifestMerger true    
    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 19
        buildConfigField "String", "GIT_SHA", "\"${gitSha()}\""
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
//        buildConfigField "String", "BUILD_TIME", buildTime()
    }   
    ...    
sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src/com', 'src/se', 'src/viewpagerindicator' , 'src-gen']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }    
        ...
        androidTest {
                setRoot('src/androidTest')
        }
    }    
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}
...    
robolectric {
    include '**/*Tests.class'
    exclude '**/espresso/**/*.class'
}

我的测试:

@RunWith(RobolectricTestRunner.class)
public class StartTest {
    @Test
    public void testSomething() throws Exception {
        //Activity activity = Robolectric.buildActivity(DeckardActivity.class).create().get();
        assertTrue(true);
    }
}

1 个答案:

答案 0 :(得分:2)

我认为问题在于您的文件掩码。您正在包含测试 s .class,但您的类名为StartTest(请注意缺少的 s ),因此不会包含它。