android运行测试注册,AndroidX:没有注册仪器!必须在注册仪器下...

我正在尝试运行一个取决于上下文的本地单元测试,并遵循本指南:https://developer.android.com/training/testing/unit-testing/local-unit-tests#kotlin并且我设置了这样的项目(在此链接之后:https://developer.android.com/training/testing/set-up-project):

的build.gradle(APP)

android {

compileSdkVersion 28

buildToolsVersion '27.0.3'

defaultConfig {

minSdkVersion 21

targetSdkVersion 27

versionCode 76

versionName "2.6.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

multiDexEnabled true

useLibrary 'android.test.runner'

useLibrary 'android.test.base'

useLibrary 'android.test.mock'

}

testOptions {

unitTests.returnDefaultValues = true

unitTests.all {

// All the usual Gradle options.

testLogging {

events "passed", "skipped", "failed", "standardOut", "standardError"

outputs.upToDateWhen { false }

showStandardStreams = true

}

}

unitTests.includeAndroidResources = true

}

dependencies {

implementation fileTree(include: ['*.jar'], dir: 'libs')

androidTestImplementation("androidx.test.espresso:espresso-core:$espressoVersion", {

exclude group: 'com.android.support', module: 'support-annotations'

})

// Espresso UI Testing dependencies

implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"

androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"

androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"

testImplementation 'androidx.test:core:1.0.0'

// AndroidJUnitRunner and JUnit Rules

androidTestImplementation 'androidx.test:runner:1.1.0'

androidTestImplementation 'androidx.test:rules:1.1.0'

// Espresso Assertions

androidTestImplementation 'androidx.test.ext:junit:1.0.0'

androidTestImplementation 'androidx.test.ext:truth:1.0.0'

androidTestImplementation 'com.google.truth:truth:0.42'

implementation 'androidx.multidex:multidex:2.0.0'

}

我的espresso_version是espressoVersion =’3.1.0′

我在module-name / src / test / java /中的测试如下所示:

import android.content.Context

import androidx.test.core.app.ApplicationProvider

import com.instacart.library.truetime.TrueTime

import edu.mira.aula.shared.extensions.android.trueDateNow

import edu.mira.aula.shared.network.ConnectivityHelper

import kotlinx.coroutines.experimental.runBlocking

import org.junit.Assert

import org.junit.Before

import org.junit.Test

import java.util.*

import java.util.concurrent.CountDownLatch

class TimeExtensionsUnitTest {

private lateinit var instrumentationCtx: Context

@Before

fun setup() {

instrumentationCtx = ApplicationProvider.getApplicationContext()

}

@Test

fun testTrueTimeValueReturnsIfInitialized() {

if (ConnectivityHelper.isOnline(instrumentationCtx)) {

runBlocking {

val countDownLatch = CountDownLatch(1)

TrueTime.build()

.withSharedPreferencesCache(instrumentationCtx)

.withConnectionTimeout(10000)

.initialize()

countDownLatch.countDown()

try {

countDownLatch.await()

val dateFromTrueTime = trueDateNow()

val normalDate = Date()

Assert.assertNotEquals(dateFromTrueTime, normalDate)

} catch (e: InterruptedException) {

}

}

}

}

每次我运行它,它给了我:

java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation.

at androidx.test.platform.app.InstrumentationRegistry.getInstrumentation(InstrumentationRegistry.java:45)

at androidx.test.core.app.ApplicationProvider.getApplicationContext(ApplicationProvider.java:41)

如果我将它作为一个仪器测试(更改包)运行它运行没有错误.

但我认为本指南正是能够使用Android框架类(如Context)运行单元测试.

我甚至试过运行该类UnitTestSample但发生了同样的错误.

我还从我的项目中删除了所有android.support依赖项

关于如何解决它的任何想法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值