Эспрессо-тест проводится дважды - PullRequest
0 голосов
/ 01 ноября 2018

Чтобы выполнить тестирование покрытия кода и инструментария, я использовал Junit Test Suite для порядка выполнения, поскольку существует несколько зависимых классов. Проблема в том, что мой тест выполняется в порядке, соответствующем тесту Junit НО Тест выполняется дважды ... один согласно тесту Junit и один в случайном порядке . Мне нужно сделать только одну итерацию, определенную в наборе тестов Junit.

@Suite.SuiteClasses({
        test1.class,
        test2.class,
        test4.class,
        test3.class,
        test8.class,
        test7.class

}) 

Опробовано с конфигурацией ниже двух, все еще тест выполняется дважды, т.е. 1 в соответствии с набором тестов и один в случайном порядке

testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'

Когда я пытаюсь выполнить с приведенной ниже конфигурацией, тестовый костюм пуст.

testInstrumentationRunner 'com.xx.xxx.modules.runner.JunitTestSuite'

Я использовал приведенные ниже аннотации в моих файлах тестовых классов ... пожалуйста, обратите внимание, что я не хочу выполнения в соответствии с порядком методов в классе. я уже использовал @FixMethodOrder(MethodSorters.NAME_ASCENDING) для того же. Мне нужно сделать то же самое с классом. То есть мне нужно выполнить тест с помощью класса order

1 Ответ

0 голосов
/ 01 ноября 2018

Я собираюсь ответить, основываясь на нескольких предположениях, пожалуйста, исправьте те, которые содержатся в исходном вопросе, если я что-то получу неправильно.

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

Похоже, что тест выполняется как часть пакета и сам по себе. Вы можете обойти это несколькими способами, но при условии, что все ваши тестовые классы находятся в вашем классе Suite, проще всего запустить класс Suite только в вашем тестовом средстве. Если вы запускаете тесты из командной строки gradle, вы можете сделать это, передав такой аргумент, как этот (я предполагаю, что ваш класс Test Suite называется com.xx.xxx.modules.runner.JunitTestSuite '):

-Pandroid.testInstrumentationRunnerArguments.class=com.xx.xxx.modules.runner.JunitTestSuite

Если вы не запускаете свои тесты из командной строки gradle или у вас есть требование для запуска тестов, которых нет в вашем Test Suite, вы можете отменить тесты или найти подходящее решение, которое работает для вас, прочитав документацию по AndroidJUnitRunner .

...