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

Является ли создание модульных тестов в отдельном проекте правильным подходом для Android?

Это описание того, как начать работу с тестированием на Android, выглядит непоследовательным:

http://developer.android.com/guide/topics/testing/testing_android.html

В нем говорится:

Проект тестирования - это каталог или проект Eclipse, в котором вы создаете исходный код, файл манифеста и другие файлы для тестового пакета. Android SDK содержит инструменты для Eclipse с ADT и для командной строки, которые создают и обновляют тестовые проекты для вас. Инструменты создайте каталоги, которые вы используете для исходного кода и ресурсов, и файл манифеста для тестового пакета.

Однако, тогда он говорит:

Вы можете создать тестовый проект в любой точке файловой системы, но лучший подход заключается в том, чтобы добавить тестовый проект, чтобы его корневой каталог тестов/находится на том же уровне, что и каталог src/main прикладного проекта. Это поможет вам найти тесты, связанные с приложение.

Затем он показывает структуру проекта, где все ваши тесты находятся под вашим основным проектом, а не отдельным проектом. Тем не менее, если вы используете плагин ADT, он создаст отдельный проект. Какая правильная или лучшая практика - отдельный проект для модульных тестов или один и тот же проект?

4b9b3361

Ответ 1

Возможно, можно создать модульные тесты в отдельном проекте, но способ, которым я это сделал, - это просто использовать другой пакет.

Это позволяет вам ссылаться на любые классы, которые могут вам понадобиться при создании ваших полей assert.

Как я это делаю, есть пакет под названием com..Data.Tests и для определения моих тестов используйте следующее:

public class AddressValidationTest extends
    ActivityInstrumentationTestCase2<InitialActivity>

Это позволяет сохранить все в рамках одного проекта.

Надеюсь, это поможет!

EDIT: Возможно, ваше замешательство исходит из терминологии Java проектов против пакетов или классов. Я думаю, что в этом случае, когда они говорят "проект", они ссылаются на автономный класс, способный запускать unit test.

EDIT2: Вам не нужно больше одного манифеста.
Включите любые тестовые действия в манифест со следующим:

<uses-library android:name="android.test.runner" />  

<instrumentation android:label="All Tests"
    android:name="com.App.Data.Tests.MyInstrumentationTestRunner"
    android:targetPackage="com.App.UI" />

Ответ 2

Создает единичные тесты в отдельном проекте, правильный подход для Android?

Мое мнение. Да, это лучший подход. Если вы используете тот же проект, в вашем manifest будут добавлены дополнительные коды, вам нужно добавить дополнительный класс в свой src.
Если вы создадите отдельный проект, это не повлияет на наш основной код проекта И по функциональности оба способа будут работать одинаково.
Так зачем же путаться:)

EDIT: для использования того же проекта вам нужно добавить в файл манифеста следующее:

<manifest>
    <!-- For doing JUnit test--->
    <instrumentation
        android:targetPackage="com.your.package.where.testclasses"
        android:name="android.test.InstrumentationTestRunner" />
        <application ...>
            <activity..>
            <!-- For doing JUnit test -->
            <uses-library android:name="android.test.runner" />
        </application>
</manifest>

Ответ 3

По-моему, создание отдельного проекта для тестовых случаев - это хорошо. Особенно, если вашему проекту нужна более ранняя версия JRE. Для проектов Android это может быть неприменимо, но для встроенных проектов Java, где ему нужны более старые JRE.

Поскольку для большинства тестовых фреймворков требуется, по меньшей мере, JDK 1.5 или выше, создание отдельных проектов для тестовых классов является единственным решением.