簡體   English   中英

Android Studio中的Robolectric和Instrumentation測試

[英]Robolectric and Instrumentation tests in Android Studio

我想創建Robolectric測試以補充現有的儀器測試。 我發現了gradle插件 ,該插件聲稱支持Robolectric測試的單獨模塊。 但是,當我嘗試使用此插件時,出現以下錯誤:

找不到類別:“ bbct.android.test.activity.test.FilterCardsTest”

這是我的build.gradle文件:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "bbct.android.common"
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    signingConfigs {
        release
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
        lite {
            applicationId "bbct.android"
            versionCode 15
            versionName "0.6.2"
        }
        premium {
            applicationId "bbct.android.premium"
            versionCode 14
            versionName "0.6.2"
        }
    }
    def Properties props = new Properties()
    def propFile = new File('signing.properties')
    if (propFile.canRead()) {
        props.load(new FileInputStream(propFile))

        if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
                props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
            android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
            android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
            android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
            android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
        } else {
            println 'signing.properties found but some entries are missing'
            android.buildTypes.release.signingConfig = null
        }
    } else {
        println 'signing.properties not found'
        android.buildTypes.release.signingConfig = null
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.google.android.gms:play-services:4.2.42'
    liteCompile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1'
    androidTestCompile ('com.squareup:fest-android:1.0.8') {
        exclude group: 'com.android.support'
    }
}

FilterCardsTest

package bbct.android.test.activity.test;

import android.app.Activity;
import bbct.android.common.activity.FragmentTestActivity;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

import static org.junit.Assert.assertTrue;

@Config(manifest = "./src/main/AndroidManifest.xml")
@RunWith(RobolectricTestRunner.class)
public class FilterCardsTest {

    @Test
    public void testSomething() throws Exception {
        Activity activity = Robolectric.buildActivity(FragmentTestActivity.class).create().get();
        assertTrue(activity != null);
    }

}

哪里找不到類異常? 我希望當您在Android Studio中進行自動測試時會出現這種情況。

可能有不同的原因。 首先,當您在android studio中開始測試時,不會編譯您的測試類。 Second Android Studio不知道在哪里搜索編譯的類。

對於第一個問題,只需編譯您的測試類。 對於第二個問題,您可以修改測試模塊iml文件,在該文件中您必須根據需要更改測試輸出的路徑。

這是一個完整的示例,它將自動進行iml修改。 https://github.com/nenick/android-gradle-template

這里詳細說明了如何強制android studio編譯測試類https://github.com/nenick/android-gradle-template/wiki/Tests-in-Android-Studio---IntellJ

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM