Запустите тест Junit с помощью инструментария Android для пакета с классами в определенном порядке. - PullRequest
6 голосов
/ 26 октября 2011

Я пытаюсь запустить тестирование Junit инструментария Android с помощью командной строки. Я использую следующую команду и запускаю тест справа.

adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner

Мой пакет проекта Android имеет следующие исходные файлы Java (в алфавитном порядкезаказ)

com.android.foo

ActivityTest

ContactsTest

LaunchTest

SendTest

При запускетест, использующий вышеупомянутую команду, тест начинает выполнение ActivityTest сначала и так далее.Это не то, что я хочу, я хочу, чтобы он сначала запустил LaunchTest, а затем ContactTest, SendTest и ActivityTest.Я попытался использовать

adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner

, но это дает мне ошибку, возможно, потому, что я не использую класс TestCase в своем коде, но вместо этого мой LaunchTest и другие расширяют ActivityInstrumentationTestCase2.

любая помощь приветствуется.

Ответы [ 2 ]

6 голосов
/ 28 октября 2011

Я наконец заставил его работать с помощью следующей команды:

adb shell am instrument -e class com.android.foo.LaunchTest -w com.android.foo/android.test.InstrumentationTestRunner
0 голосов
/ 26 октября 2011

Если порядок выполнения ваших тестов имеет значение, ваши тесты хрупкие и должны быть реорганизованы.Это означает, что они зависят друг от друга и в идеале тесты являются независимыми.Обычно большинство тестов настолько независимы и точны, что мы называем их юнит-тестами.

Распространение таких зависимостей обычно начинается с использования методов setup() и teardown() в TestCase.Здесь вы можете подготовиться к запуску тестов и очистить любые изменения, которые могут внести ваши тесты.


При этом android.test.InstrumentationTestRunner не имеет возможности переписать наборы тестов.Однако это можно сделать двумя способами.

1) вы можете создать собственную реализацию android.test.InstrumentationTestRunner, которая выполняет особый порядок.Это даст вам максимальную гибкость, но может занять больше времени.

2) am instrument может принять имя класса в качестве аргумента, чтобы вы могли выполнять свои тесты по порядку, но выполняя несколько команд (возможно, объединенных в bashскрипт).Это делается путем добавления аргументов «-e class [classname of test]».


Кроме того, при выполнении ваших тестов возникает ошибка:

adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner

пытается бежать за двумя классами.Для этого вам нужно изменить это на:

adb shell am instrument -w -e class com.android.foo.LaunchTest com.android.foo/android.test.InstrumentationTestRunner
adb shell am instrument -w -e class com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner
...