Запуск нового проекта со следующими зависимостями:
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.