Проблема Android с AndroidJUnitRunner, дающая «java.lang.ClassNotFoundException»

Я новичок в инструментальном тестировании. Я пытаюсь провести базовое тестирование с помощью 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». Я хотел бы также упомянуть, что в моем исходном коде есть файл класса приложения. Теперь каждый раз, когда я пытаюсь запустить тест, он выдает следующую ошибку:

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

Может ли кто-нибудь помочь мне определить проблему в моем тестовом коде?


person dev_android    schedule 01.05.2017    source источник


Ответы (2)


Как вы проводите свои тесты?

Если вы делаете это из Android Studio:

  • Откройте меню «Выполнить» -> «Редактировать конфигурации».
  • Добавить новую конфигурацию Android Tests
  • Выберите модуль
  • Добавьте конкретный инструментальный бегун:

    android.support.test.runner.AndroidJUnitRunner

Из командной строки через Gradle:

./gradlew connectedAndroidTest
person makovkastar    schedule 01.05.2017

Я решил проблему. Это связано с разницей имен пакетов. Я устанавливаю все имена пакетов однородными и запускаю снова. Оно работает. Спасибо всем за помощь.

person dev_android    schedule 03.05.2017