2016-01-21 4 views
20

私はジュニット4計測テストをエスプレッソで終わらせていましたが、その最終ステップを得ることはできません。私が何をしても、それはonView()メソッドを認識しません。私は複数のSDK/support-libバージョンを試してきましたが、これまでのところ何もありませんでした。私はすべてのGoogleのセットアップガイドと多くのstackoverflowの記事を読んで、私の最後の希望としてここに回ってきました。エスプレッソのUIテストでonView()が認識されない

Gradleのバージョン:com.android.tools.build:gradle:1.5.0

のGradleファイル:(src/androidTest/java/lv/my/testにあります)

apply plugin: 'com.android.application' 
apply plugin: 'com.google.gms.google-services' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 
    useLibrary 'org.apache.http.legacy' 

    defaultConfig { 
     applicationId "lv.my.android" 
     minSdkVersion 9 
     targetSdkVersion 22 
     testApplicationId "lv.my.android.tests" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

    packagingOptions { 
     exclude 'LICENSE.txt' 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/NOTICE' 
    } 

    compileOptions { 
     sourceCompatibility = 'VERSION_1_7' 
     targetCompatibility = 'VERSION_1_7' 
    } 

    signingConfigs { 
     beta { 
      storeFile file("beta.keystore") 
      storePassword "betabuild" 
      keyAlias "key" 
      keyPassword "betabuild" 
     } 
     release 
    } 

    buildTypes { 
     debug { 
      debuggable true 
      applicationIdSuffix '.debug' 
      versionNameSuffix '-DEV' 
      minifyEnabled false 
     } 

     beta { 
      debuggable true 
      applicationIdSuffix '.beta' 
      versionNameSuffix '-BETA' 
      signingConfig signingConfigs.beta 
      minifyEnabled false 
     } 

     release { 
      minifyEnabled false 
     } 
    } 
} 

dependencies { 
    compile files('src/main/libs/guice-3.0-no_aop.jar') 
    compile files('src/main/libs/javax.inject-1.jar') 
    compile files('src/main/libs/roboguice-2.0.jar') 
    compile files('src/main/libs/junit-4.11.jar') 
    compile files('src/main/libs/hamcrest-core-1.3.jar') 
    compile files('src/main/libs/GeoLib.jar') 
    compile files('src/main/libs/GeoPolygons.jar') 
    compile files('src/main/libs/universal-image-loader-1.9.4.jar') 
    compile files('src/main/libs/javax.annotation-3.2-b06-sources.jar') 
    compile 'uk.co.chrisjenx:calligraphy:2.1.0' 
    compile 'com.squareup:otto:1.3.5' 
    compile 'com.google.android.gms:play-services:6.5.87' 
    compile 'com.android.support:support-annotations:23.0.1' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:support-v4:23.0.1' 
    compile 'com.android.support:palette-v7:23.0.1' 
    compile 'com.google.code.findbugs:jsr305:2.0.1' 
    compile 'com.nineoldandroids:library:2.4.0' 
    compile 'pl.charmas.android:android-reactive-location:[email protected]' 
    compile 'io.reactivex:rxjava:1.0.3' 
    compile files('src/main/libs/FlurryAnalytics-6.1.0.jar') 
    compile 'com.github.castorflex.smoothprogressbar:library:1.1.0' 



    androidTestCompile 'com.android.support.test:testing-support-lib:0.1' 
    androidTestCompile'com.android.support.test:runner:0.4.1' 
    // Set this dependency to use JUnit 4 rules 
    androidTestCompile'com.android.support.test:rules:0.4' 
    // Set this dependency to build and run Espresso tests 
    androidTestCompile'com.android.support.test.espresso:espresso-core:2.2.1' 
    testCompile 'junit:junit:4.12' 
    testCompile "org.mockito:mockito-core:1.9.5" 
} 

私のテスト

package lv.my.test; 

import android.support.test.rule.ActivityTestRule; 
import android.support.test.runner.AndroidJUnit4; 
import android.test.suitebuilder.annotation.LargeTest; 
import lv.my.android.activities.LoginActivity; 

import org.junit.Before; 
import org.junit.Rule; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class LoginActivityTest { 

    private String mStringToBetyped; 

    @Rule 
    public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule<>(LoginActivity.class); 

    @Before 
    public void initValidString() { 

    } 

    @Test 
    public void changeText_sameActivity() { 
//  onView not recognized here 

    } 
} 

PS。私はroboguiceを使用することが問題になる可能性がありますか?

+4

importステートメントを 'import static android.support.test.espresso.Espresso.onView; 'として追加しようとします。 – Raghunandan

答えて

44

あなたは、静的インポートを使用する必要があり、次のいずれか

import static android.support.test.espresso.Espresso.onView; 

または

import android.support.test.espresso.Espresso; 

をとAndroidで、Egorを示唆しているものを拡張するために、次のよう

Espresso.onView() 
+6

。例やチュートリアルのどれもこれを言及していない、それはそれが箱の外で働くべきであることを示した。だから、私はこれが働いて 'Espresso.onView(ViewMatchers.withId(R.id.registerButton))' – somerandomusername

+2

だから、なぜここでこれについて何も言わないのですか:http://developer.android.com/training/testing/ ui-testing/espresso-testing.html#build – somerandomusername

+8

同意すると、輸入品について言及することは良いことです。 – Egor

8

でそれを呼び出しますスタジオで、一度onView()に赤いテキストが表示されたら、単にalt +と入力すると、赤い球がポップアップします。次に、スタティックインポートを選択します。

+4

+1これは動作します。魅力的なキーストローク。私も同様に問題を抱えています。まさにあなたが言及したように、 'matchers.ViewMatchers'を使って静的インポートを提案しました。どうもありがとう! –

0

Android Studioでは、「内側から」必要なエスプレッソの輸入を提案します。 例:onView(withId())最初にwithId()を検出し、次にonView()を検出します。

関連する問題