2014-07-10 76 views
0

我想創建Robolectric測試來補充我現有的儀器測試。我發現a gradle plugin,意圖支持與Robolectric測試單獨的模塊。然而,當我嘗試使用這個插件,我得到以下錯誤:Android Studio中的Robolectric和Instrumentation測試

Class not found: "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); 
    } 

} 

回答

2

哪裏弄來你的課沒有發現異常?我期待它會在Android Studio裏面進行robolectric測試。

可能有不同的原因。首先,當您在android studio中開始測試時,您的測試類將不會被編譯。第二個Android工作室不知道在哪裏搜索編譯的類。

第一個問題就是編譯你的測試類。對於第二個問題,您可以修改測試模塊iml文件,您必須將測試輸出的路徑更改爲您的需要。

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

在這裏詳細介紹瞭如何強制機器人工作室編譯你的測試類 https://github.com/nenick/android-gradle-template/wiki/Tests-in-Android-Studio---IntellJ

+0

是的,我得到的異常,當我嘗試運行Android Studio中的Robolectric測試。 –

相關問題