Подтвердить что ты не робот

Как заставить Android Studio распознавать файл как источник (тест)

Я пытаюсь создать тесты Robolectric для проекта Android (черт возьми, я был бы рад даже сделать им модульные тесты)

У меня есть каталог папок как:

MyApp
    - app
        - src
            - main
                - java
                    - com.myapp
                        HelloWorld
            - test
                - java
                    - com
                        - myapp
                            HelloWorldTest.java

Проблема заключается в том, что HelloWorldTest.java не может быть запущен, потому что он не распознается как источник. как настроить его, чтобы я мог запускать этот класс в качестве теста?????

Если я попытаюсь сделать CMD + SHIFT + T (ярлык для создания тестов), он предложит создать тесты в том же каталоге, что и мой исходный файл, и я НЕ хочу, чтобы

4b9b3361

Ответ 1

В Android Studio 1.3:

Создать > Выбрать вариант сборки

В окне "Варианты сборки" выберите Тесты единиц в качестве тестового артефакта.

Ответ 2

В Android Studio 1.0 схема немного изменилась.

Ваш путь должен быть (app)/src/androidTest/java/com/myapp/HelloWorldTest.java

Вот как я настроил Unit Tests в новом проекте Android Studio:

  • Откройте приложение в Android Studio.
  • Установите проводник проекта (левое окно), чтобы отобразить режим "Проект". Нажмите небольшое раскрывающееся меню в верхнем левом углу и выберите "Проект".
  • Щелкните правой кнопкой мыши каталог 'src', 'New → Directory'.
  • Вызов нового каталога androidTest
  • Щелкните правой кнопкой мыши androidTest и добавьте каталог "java". Он будет отображаться зеленым цветом (указывая на него тестовую директорию src).
  • Теперь щелкните правой кнопкой мыши и добавьте пакет, например. com.mycompany.myapp.tests
  • Добавить новый класс, расширяющий AndroidTestCase.

Теперь добавьте новую конфигурацию для тестирования:

  • Изменить конфигурации
  • Нажмите + в верхнем левом углу
  • Выберите Android Tests
  • Вкладка "Общие" выберите главный модуль.
  • Нажмите OK

Теперь вы можете запускать тесты.

Ответ 3

Следуйте рекомендациям, приведенным здесь:

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing

и здесь

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure

Резюме:

Как говорится в первой ссылке, вы должны переименовать свой каталог test как instrumentTest, чтобы Studio автоматически обнаруживала исходные наборы для вашего тестового проекта

или

Альтернативный вариант: у вас может быть ваш каталог tests в корневом каталоге (с вашим основным каталогом) и в источниках таким образом, как tests/java, поскольку вторая ссылка говорит

instrumenttest.setRoot("tests")

в конфигурации sourceSets под тегом android

Из документа

Примечание. setRoot() перемещает весь исходный набор (и его подпапки) в новая папка. Это перемещает src/instrumentTest/* в тесты /* Это Android и не будет работать с Java sourceSets.

Ответ 4

У меня была аналогичная проблема в течение долгого времени, и, наконец, я решил это.

Чтобы заставить Android Studio распознавать источник src/test как источник, вам нужно выбрать "Unit Tests" в "Build Variants" → "Test Artifact:"

Однако в моем проекте у меня не было "Unit Tests", у меня были только тесты на Android Instrumentation. Это два разных типа модульных тестов в Android.

Смотрите: http://developer.android.com/training/testing/unit-testing/index.html
1. Единичные тесты - тесты локального блока
2. Android Измерительные приборы - Контрольно-измерительные приборы

Это не очевидно вообще, но внутри "Build Variants" → "Test Artifact:" у вас нет опции "Unit Tests", когда у вас есть несколько модулей в вашем проекте.

Мой проект dir выглядел так:
: проект
-: module1
-: module2
-: Module3
-: module4
-: module5
-settings.gradle → include ': module1', ': module2',...
Эти модули на самом деле не связаны друг с другом, но так оно и должно быть для многих других разработчиков, которые пришли из Eclipse. Это была проблема.

Затем я создал отдельный проект только для моего модуля:
: проект
-: module1
-settings.gradle → include ': module1'

После этого "Unit Tests" появился в "Build Variants" → "Test Artifact:" , и теперь я могу выбирать между локальными блоками и тестами на Android Instrumentation.