В 2020 году не было найдено инструментальных тестов с использованием библиотеки поддержки. - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь добавить простой инструментальный тест в мое приложение. Приложение до сих пор не перенесено в библиотеки androidx, поэтому оно все еще использует библиотеки поддержки.

Я добавил эти инструменты, связанные с библиотеками поддержки, для тестирования:

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:0.4.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestImplementation ('com.android.support.test.espresso:espresso-contrib:3.0.2'){
     exclude group: 'com.android.support', module: 'appcompat'
     exclude group: 'com.android.support', module: 'support-v4'
     exclude module: 'recyclerview-v7'
}
androidTestUtil 'com.android.support.test:orchestrator:1.0.2'
androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'

Также я указал бегуна:

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

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

@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {

    @Test
    fun testUseAppContext() {
        // Context of the app under test.
        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
        Assert.assertEquals("com.mycompany.myapp", appContext.packageName)
    }
}

Вот то, что я вижу в журналах, когда запускаю его (нажав на зеленый треугольник «play» слева от имя класса):

Testing started at 12:37 PM ...

04/27 12:37:41: Launching 'ExampleInstrumentedT...' on samsung SM-G920F.
Running tests

$ adb shell CLASSPATH=$(pm path android.support.test.services) app_process / android.support.test.services.shellexecutor.ShellMain am instrument -r -w -e targetInstrumentation com.mycompany.myapp.test/android.support.test.runner.AndroidJUnitRunner    -e debug false -e class 'com.mycompany.myapp.ExampleInstrumentedTest' android.support.test.orchestrator/android.support.test.orchestrator.AndroidTestOrchestrator

Started running tests

Tests ran to completion.

Кажется, все в порядке, но также я вижу красную метку "Тесты не найдены" no-tests-were-found И если я изменю ожидаемое значение с "com.mycompany.myapp "к чему-то другому и снова запустите тест, он выдаст мне тот же журнал, так что, очевидно, он не работает.

Я посмотрел в лабораториях Google Code о тестировании здесь Он использует androidx в его код и упомянутый выше простой тест прекрасно работает. Вот что я вижу в журналах:

Testing started at 12:44 PM ...

04/27 12:44:34: Launching 'ExampleInstrumentedT...' on samsung SM-G920F.
Running tests

$ adb shell am instrument -w -r    -e debug false -e class 'com.example.android.architecture.blueprints.todoapp.ExampleInstrumentedTest' com.example.android.architecture.blueprints.reactive.test/androidx.test.runner.AndroidJUnitRunner
Connected to process 8930 on device 'samsung-sm_g920f-081608e304c73302'.

Started running tests

Tests ran to completion.

Вот как это выглядит на вкладке «Выполнить» в IDE: enter image description here

Не могли бы вы мне чем-нибудь помочь? причина root моей проблемы? Может ли это быть из-за использования старых вещей, связанных с поддержкой libs, вместо использования androidx? Могу ли я каким-то образом запустить инструментальный тест с использованием средств поддержки lib?

PS Я также попробовал эту команду gradle:

./gradlew connected<myBuildVariand>AndroidTest

И это приводит к тому же результату, тесты не найдены:

com.android.builder.testing.ConnectedDevice > No tests found.[SM-G920F - 7.0] FAILED 
No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...