【问题标题】:Android prob with AndroidJUnitRunner giving 'java.lang.ClassNotFoundException'Android 问题与 AndroidJUnitRunner 给出'java.lang.ClassNotFoundException'
【发布时间】:2017-05-01 20:26:17
【问题描述】:

我是仪器测试的新手。我正在尝试使用 AndroidJUnitRunner 进行基本测试。这是我的毕业典礼:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "com.kaushik.mycart.ui"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        jackOptions.enabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    ..........................
    ..........................

    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:1.10.19'
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'

}

然后我添加了一个名为“ProductListActivityTest”的类来使用 AndroidJunitRunner 进行测试。如下:

package com.kaushik.myredmart.ui;
// all includes
@RunWith(AndroidJUnit4.class)
public class ProductListActivityTest {

    @Rule
    public ActivityTestRule<ProductListActivity> rule  = new  ActivityTestRule<>(ProductListActivity.class);

    @Test
    public void ensureListViewIsPresent() throws Exception {
        ProductListActivity activity = rule.getActivity();
        View viewByIdw = activity.findViewById(R.id.productListView);
        assertThat(viewByIdw,notNullValue());
        assertThat(viewByIdw, instanceOf(RecyclerView.class));
        RecyclerView productListView = (RecyclerView) viewByIdw;
        RecyclerView.Adapter adapter = productRecyclerView.getAdapter();
        assertThat(adapter, instanceOf(ProductAdapter.class));

    }
}

我没有在“androidTest”中添加其他文件。我还想提一下,我的源代码中有 Application 类文件。现在每次我尝试运行测试时,都会出现以下错误:

Started running tests
Test running failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'
Empty test suite.

谁能帮我找出测试代码中的问题?

【问题讨论】:

    标签: android unit-testing android-instrumentation android-junit androidjunitrunner


    【解决方案1】:

    你是如何进行测试的?

    如果您是在 Android Studio 中进行的:

    • 打开运行菜单 -> 编辑配置
    • 添加新的 Android 测试配置
    • 选择一个模块
    • 添加特定的仪表运行器:

      android.support.test.runner.AndroidJUnitRunner

    从命令行通过 Gradle:

    ./gradlew connectedAndroidTest
    

    【讨论】:

      【解决方案2】:

      我解决了这个问题。这是由于包名称的不同。我将所有包名称设置为统一并再次运行。有用。谢谢大家的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-07
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多