Ответ 1
Существует два способа:
-
Вы можете создать независимый проект Android (который можно разместить в любой папке вне проекта приложения) для ваших контрольных тестов только с помощью Android Studio 3.0. Для этого я использовал:
Android Studio 3.0 Beta 6
Android Gradle Плагин: 'com.android.tools.build: gradle:3.0.0-beta6'
-
Вы можете создать отдельный модуль (который вы можете поместить в любую папку вне проекта приложения) для ваших контрольных тестов. Для этого вы можете использовать:
С Android Studio 3.0.0
С Android Gradle Плагин 3.0.0
С Gradle Wrapper 4.2.1-all
Если вы получили сообщение , что AndroidManifest модуля тестирования и модуля приложения не может быть объединен, вы можете ограничить его старым Gradle версии, которые
Протестировано с помощью Android Studio 2.3.3 и 3.0.0
Самый высокий плагин Android Gradle будет 2.2.3
Gradle Обертка 3.3-все (или 3.4.1/4.2.1)
Примечание. Это нарушено для Android Gradle Плагин 2.3.0!
Я создал ПРОГРАММА SAMPLE, чтобы продемонстрировать структуру тестов в обоих случаях.
build.gradle проекта/модуля должен использовать этот плагин:
// A plugin used for test-only-modules
apply plugin: 'com.android.test'
Этот плагин использует ссылку TestExtension (на свой DSL). С плагином TestExtension и 'com.android.test ваш файл Gradle будет выглядеть так:
apply plugin: 'com.android.test'
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
minSdkVersion 9
targetSdkVersion 26
// The package name of the test app
testApplicationId 'com.example.android.testing.espresso.BasicSample.tests'
// The Instrumentation test runner used to run tests.
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
// Set the target app project. The module specified here should contain the production code
// test should run against.
targetProjectPath ':app'
}
dependencies {
// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
compile 'junit:junit:4.12'
compile 'com.android.support:support-annotations:25.4.0'
compile 'com.android.support.test:runner:1.0.1'
compile 'com.android.support.test:rules:1.0.1'
compile 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Обратите внимание, что здесь поддерживается "androidTestCompile" !
Не забудьте создать AndroidManifest.xml
. Он будет выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.testing.espresso.BasicSample.tests">
<!-- Specify runner and target application package -->
<instrumentation
android:name="android.support.test.runner.AndroidJUnitRunner"
android:functionalTest="false"
android:handleProfiling="false"
android:label="Tests for com.example.android.testing.espresso.BasicSample"
android:targetPackage="com.example.android.testing.espresso.BasicSample"/>
<application>
<uses-library android:name="android.test.runner" />
</application>
</manifest>
Обратите внимание, что исходные исходные файлы находятся в папке главная (не androidTest):
src- > Main- > Java- > package.name.folders
Затем вы можете связать этот тестовый проект с вашим проектом приложения в settings.gradle:
include ':module-androidTest'
project(':module-androidTest').projectDir = new File("../BasicSampleTests/test")
В Android Studio вы должны создать конфигурацию запуска Android Instrumented Tests. Это будет выглядеть так:
Теперь запустите ваши тесты:
Если у вас возникли проблемы с выпуском продукта, вам следует добавить publishNonDefault в build.gradle вашего приложения:
android {
...
defaultConfig {
...
}
publishNonDefault true
}