Почему происходит сбой процесса моего набора тестов androidx? - PullRequest
0 голосов
/ 03 декабря 2018

Запуск нового проекта со следующими зависимостями:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.robolectric:robolectric:4.0.2'
    androidTestImplementation "androidx.test.ext:junit:1.0.0"
androidTestImplementation "androidx.test:rules:1.1.0"
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}

С настройкой по умолчанию, установленной на это:

android {
  ...
  defaultConfig {
    testInstrumentationRunner 'androidx.test.ext.junit.runners.AndroidJUnit4'
  }
}

Я написал следующий тестовый класс:

import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import androidx.test.rule.ActivityTestRule 
import org.junit.runner.RunWith

import org.junit.Rule
import org.junit.Test
import org.pos.activities.Checkout

@RunWith(AndroidJUnit4::class)
@LargeTest
class CheckoutInstrumentedTest {

  @get:Rule
  var activityRule: ActivityTestRule<Checkout> = 
         ActivityTestRule(Checkout::class.java)

  @Test
  fun testAddItem_computeTotal() {
      onView(withId(R.id.itemValue))
          .perform(typeText("5"), closeSoftKeyboard())

      onView(withId(R.id.addItemButton)).perform(click())

      onView(withId(R.id.total)).check(matches(withText("$5.00")))
  }
}

Когда я запускаю тест с помощью Android studio, я получаю следующую ошибку в выводе теста

Test running failed: Instrumentation run failed due to 'Process crashed.'
Empty test suite.

Наряду со следующей ошибкой в ​​logcat:

java.lang.RuntimeException: Unable to instantiate instrumentation ComponentInfo{org.pos.test/androidx.test.ext.junit.runners.AndroidJUnit4}: java.lang.InstantiationException: java.lang.Class<androidx.test.ext.junit.runners.AndroidJUnit4> has no zero argument constructor
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5956)
        at android.app.ActivityThread.-wrap3(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1727)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6823)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
     Caused by: java.lang.InstantiationException: java.lang.Class<androidx.test.ext.junit.runners.AndroidJUnit4> has no zero argument constructor
        at java.lang.Class.newInstance(Native Method)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5954)

Что заставляет бегуна не загружаться?Я запускаю это на Samsung Galaxy Tab A под управлением Android v7.1.

1 Ответ

0 голосов
/ 03 декабря 2018

вы добавляете jUnit дважды:

// testImplementation 'junit:junit:4.12'
androidTestImplementation "androidx.test.ext:junit:1.0.0"

, а тестовый прогон должен быть:

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...