无法运行android espresso测试

丙醇

我正在尝试运行Android espresso测试,但它们始终因java.lang.NoClassDefFoundError而失败:com.blokura.testexample.app.MainActivity

我正在使用Jake Wharton的双重意式浓缩咖啡插件。

我尝试了Jake的设置,如github repo卡德勒所见,没有运气。

我不知道我在想什么。

这是项目结构 项目结构

这是build.gradle文件的源代码:

    apply plugin: 'android'

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

    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    sourceSets {
        androidTest {
            setRoot('src/test')
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    androidTestCompile 'com.jakewharton.espresso:espresso:1.1-r3'
    androidTestCompile 'com.jakewharton.espresso:espresso-support-v4:1.1-r3'
}

EspressoTest.java

package com.blokura.testexample.app;

import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.LargeTest;

import com.blokura.testexample.app.MainActivity;

import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView;
import static com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions.matches;
import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withId;
import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withText;
import java.lang.Exception;
import java.lang.Override;

@LargeTest
public class EspressoTest extends ActivityInstrumentationTestCase2<MainActivity>{

    @SuppressWarnings("deprecation")
    public EspressoTest() {
        super("com.blokura.testexample.app", MainActivity.class);
    }

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        getActivity();
    }

    public void testCheckText() {
        onView(withId(R.id.text))
                .check(matches(withText("Hello World!")));
    }
}

MainActivity.java

package com.blokura.testexample.app;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

完整的日志

java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onStart(GoogleInstrumentationTestRunner.java:167)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87)
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73)
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:262)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:184)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:379)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onCreate(GoogleInstrumentationTestRunner.java:114)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4335)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.blokura.testexample.app.MainActivity
at com.blokura.testexample.app.EspressoTest.<init>(EspressoTest.java:20)
... 19 more
丙醇

嗯,我忘了在gradle文件中排除支持库:(

这是正确的build.gradle文件

apply plugin: 'android'

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

    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    androidTestCompile 'com.jakewharton.espresso:espresso:1.1-r3'
    androidTestCompile ('com.jakewharton.espresso:espresso-support-v4:1.1-r3') {
        exclude group:'com.android.support', module:'support-v4'
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android espresso测试NavigationView

来自分类Dev

GitHub Actions运行Espresso测试

来自分类Dev

Android Espresso测试“无法解析符号“ InstrumentationRegistry””

来自分类Dev

Android Espresso错误活动测试

来自分类Dev

使用Espresso IdlingResource的Android测试

来自分类Dev

使用Espresso和Spoon运行特定的测试

来自分类Dev

使用Espresso在connectedCheck上运行多项测试

来自分类Dev

Espresso,按顺序运行测试类

来自分类Dev

android espresso测试:空测试套件。找不到测试

来自分类Dev

Android Espresso在测试后保持应用程序运行

来自分类Dev

在Espresso测试中无法获得ApplicationContext

来自分类Dev

Espresso UI测试无法识别onView()

来自分类Dev

无法从 espresso 测试访问内容提供程序

来自分类Dev

Android Espresso测试失败,并显示IncompatibleClassChangeError

来自分类Dev

如何使用Espresso在Android上进行测试?

来自分类Dev

Android Espresso片状withId withText测试

来自分类Dev

Android espresso错误未找到测试

来自分类Dev

Android Espresso:显示测试错误消息?

来自分类Dev

在Android上使用Espresso测试EditText错误

来自分类Dev

Android Espresso-测试不同的活动

来自分类Dev

如何在Android Espresso测试中测试setResult()?

来自分类Dev

Android:Espresso测试固件抛出“未找到测试..”异常

来自分类Dev

在运行Espresso测试时如何禁用代码中的动画

来自分类Dev

无法在 JUnit (espresso) 录制的测试中授予权限

来自分类Dev

运行Espresso测试时,在Android Studio中找不到android:forceQueryable属性

来自分类Dev

Android Espresso会进行自动测试吗?

来自分类Dev

如何使用Android Espresso测试TextInputLayout值(提示,错误等)?

来自分类Dev

Android Studio 2.2中的Espresso测试记录功能

来自分类Dev

如何在Android中基于Espresso测试Intent?

Related 相关文章

  1. 1

    Android espresso测试NavigationView

  2. 2

    GitHub Actions运行Espresso测试

  3. 3

    Android Espresso测试“无法解析符号“ InstrumentationRegistry””

  4. 4

    Android Espresso错误活动测试

  5. 5

    使用Espresso IdlingResource的Android测试

  6. 6

    使用Espresso和Spoon运行特定的测试

  7. 7

    使用Espresso在connectedCheck上运行多项测试

  8. 8

    Espresso,按顺序运行测试类

  9. 9

    android espresso测试:空测试套件。找不到测试

  10. 10

    Android Espresso在测试后保持应用程序运行

  11. 11

    在Espresso测试中无法获得ApplicationContext

  12. 12

    Espresso UI测试无法识别onView()

  13. 13

    无法从 espresso 测试访问内容提供程序

  14. 14

    Android Espresso测试失败,并显示IncompatibleClassChangeError

  15. 15

    如何使用Espresso在Android上进行测试?

  16. 16

    Android Espresso片状withId withText测试

  17. 17

    Android espresso错误未找到测试

  18. 18

    Android Espresso:显示测试错误消息?

  19. 19

    在Android上使用Espresso测试EditText错误

  20. 20

    Android Espresso-测试不同的活动

  21. 21

    如何在Android Espresso测试中测试setResult()?

  22. 22

    Android:Espresso测试固件抛出“未找到测试..”异常

  23. 23

    在运行Espresso测试时如何禁用代码中的动画

  24. 24

    无法在 JUnit (espresso) 录制的测试中授予权限

  25. 25

    运行Espresso测试时,在Android Studio中找不到android:forceQueryable属性

  26. 26

    Android Espresso会进行自动测试吗?

  27. 27

    如何使用Android Espresso测试TextInputLayout值(提示,错误等)?

  28. 28

    Android Studio 2.2中的Espresso测试记录功能

  29. 29

    如何在Android中基于Espresso测试Intent?

热门标签

归档