Запуск инструментария завершился неудачно из-за «сбоя процесса». после выполнения длительных тестов

Мне нужно выполнить около 700 тестов. Когда я запускаю их все, возникает сбой

«Сбой запуска инструментария из-за «сбоя процесса». Подробности см. в журнале регистрации устройства. Сбой тестового запуска: сбой инструментального запуска из-за «сбоя процесса».

после некоторого времени выполнения, примерно 10 минут и ~360-370-й выполненный тест.

Logcat не содержит никакой информации об этом сбое

Это применимо при запуске из Android Studio, из cmd (на ПК и Mac). Используемое устройство - Samsung S3 на Android 4.1.1

файл build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 18
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.xxx.yyy"
        minSdkVersion 9
        targetSdkVersion 18

        testApplicationId "com.xxx.zzz"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

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

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    project.gradle.taskGraph.whenReady {
        connectedAndroidTestDebug  {
            ignoreFailures = true
        }
    }
}


repositories {
    // The local cache should be used first
    mavenLocal()

    jcenter()
    mavenCentral()
}

dependencies {
    compile 'junit:junit:4.12'

    compile fileTree(include: '*.jar', dir: 'libs')
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.yyy"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CAMERA.autoFocus" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <application
        android:allowBackup="true"
        android:largeHeap="true"
        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="com.xxx.yyy.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="roboguice.annotations.packages"
            android:value="com.xxx"/>
        <meta-data
            android:name="roboguice.modules"
            android:value="com.xxx.yyy.MainModule"/>
    </application>

</manifest>

Еще одно добавление: в предыдущих выпусках моего кода этого сбоя не было, но я не могу найти, какое именно изменение привело к сбою.

Пожалуйста, помогите мне с этой проблемой, я пытаюсь понять это в течение двух недель.


person pbelov    schedule 10.08.2015    source источник
comment
можно ли выделить точный тест, который дает сбой?   -  person Chaosit    schedule 10.08.2015
comment
это не определенные сбои теста. Я попытался удалить этот тест и тестовый класс. Краши случаются в любом случае, но на других тестах. Если я запускаю их отдельно, сбоев не происходит.   -  person pbelov    schedule 10.08.2015


Ответы (2)


Не знаю, актуальна ли еще проблема для вас, но я сам столкнулся с такой проблемой. В некоторых версиях Android на устройствах Samsung была ошибка: они не закрывали файловые дескрипторы должным образом, что приводило к утечке файловых дескрипторов. После создания 1028 дескрипторов процесс падает.

http://code.google.com/p/android/issues/detail?id=32470

Чтобы избежать этого, мне пришлось сократить использование HandlerThreads в моих тестах и ​​использовать их повторно, где это возможно. Но лучшим решением будет сменить устройство, наверное.

person abaranov    schedule 07.09.2015

Попробуйте запустить инструментальные тесты на более новой версии ОС Android, например Android 5.1 (API 22) или выше. Некоторые более старые версии, такие как Android 4.1, могут вызывать подобные сбои на эмуляторе ARM.

Или попробуйте обновить версию Gradle, используемую в вашем проекте. Например, в Gradle 4.1 эта проблема будет, а в Gradle 4.10 — нет.

В качестве альтернативы старайтесь избегать запуска тестов в фоновом режиме, когда никакая активность не запускается. Поэтому избегайте использования ActivityUnitTestCase и SingleLaunchActivityTestCase, которые могут вызвать сбой нативного C++ на Android 4.1. Дополнительная информация здесь: Сбой в /dev/ashmem/dalvik- jit-код-кэш

person Mr-IDE    schedule 27.10.2018