2017-02-22 7 views
0

Android Studion 2.2.3Android. @RunWith (AndroidJUnit4.class) - невозможно решить в пакете «androidTest»

Установить Android Support Repository - вер. 44.0.0

установки я все как в официальном сайте для Эспрессо:

https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html

Я пытаюсь написать Контрольно-измерительные приборы (Espresso) в пакете androidTest. Поэтому я создаю StringUtilAndroidTest в папке SRC/androidTest/Java/COM/моякомп/

Мои StringUtilAndroidTest код:

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class StringUtilAndroidTest { 

    @Rule 
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class); 

    @Test 
    public void myTest() { 
     assert(true); 
    } 
} 

В моей build.gradle:

android.defaultconfig { 
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 

мои зависимости:

testCompile 'junit:junit:4.12' 
testCompile 'org.hamcrest:hamcrest-library:1.3' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 
androidTestCompile 'com.android.support.test:testing-support-lib:0.1 

Но в StringUtilAndroidTest я получаю компиляции ошибка:

@RunWith(AndroidJUnit4.class) 

не удается разрешить символ RunWith

Почему?

+0

Помимо добавления линий androidTestCompile в ваш build.gradle, вы также не забыли импортировать класс поверх файла Java? то есть 'import org.junit.runner.RunWith;' – Bill

+0

import org.junit.runner.RunWith; - не удается разрешить символ «RunWith» – Alexei

ответ

2

Короткий ответ: добавьте это в свои зависимости, и вы золотой.

androidTestCompile 'junit:junit:4.12' 
androidTestCompile 'org.hamcrest:hamcrest-library:1.3' 

Длинный ответ:

В конфигурации по умолчанию, проект Android-студия имеет два различных испытаний "варианты": test & androidTest. Первый использует «src/test/java», а последний «src/androidTest/java» (это ваш сценарий).

Существует большая разница между двумя: androidTest нуждается в эмуляторе или устройстве для запуска, а test - нет. Это означает, что test работает намного быстрее (обычно на пару секунд на IDE), но у него нет доступа к платформе Android (например, Activities, Contexts & и т. Д.). С другой стороны, androidTest требует гораздо больше времени для запуска (не говоря уже о времени ожидания самого эмулятора), но у него есть фреймворк Android (поскольку он работает в одном).

Поскольку они представляют собой два отдельных варианта, вам необходимо также указать их зависимости отдельно. testCompile и androidTestCompile каждый добавляет эту зависимость только к своему варианту. Чтобы иметь JUnit на обоих, вы должны заявить о зависимости от обоих - по существу, «повторяя» строку.

P.S .: Обратите внимание, что когда вы используете compile, это добавляет его ко всем вариантам, поэтому вам не нужно повторять нетестовые зависимости.

0

Возможно, вы пропустили какую-то зависимость.

//App's dependencies, including test 
compile 'com.android.support:support-annotations:22.2.0' 

// Testing-only dependencies 
androidTestCompile 'com.android.support.test:runner:0.5' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 
androidTestCompile 'junit:junit:4.12' 

testCompile 'junit:junit:4.12' 

Надеюсь, это исправит ваш код.

+0

Не помогите. Я получаю ту же ошибку – Alexei

+0

Я только что испытал это. и они действительно работали в моем случае. –