为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.IllegalStateException:未注册检测!必须在注册仪器下运行

java.lang.IllegalStateException:未注册检测!必须在注册仪器下运行

慕村225694 2021-12-10 15:38:52
我一直在尝试使用 Espresso 执行一个简单的 UI 测试,但我所有的测试都失败了,但出现了相同的异常:java.lang.IllegalStateException:未注册检测!必须在注册仪器下运行这是在使用一个esspresso新手引导在这里。我已经找到了类似的问题,但与我最相关的问题在这里没有得到解答- 我认为这是因为他们没有描绘出整个画面,所以这是我的代码。我将只展示一个测试,因为它们都以完全相同的错误失败:build.gradle(模块:app)apply plugin: 'com.android.application'android {    compileSdkVersion 27    defaultConfig {        applicationId "io.github.vinge1718.myrestaurants"        minSdkVersion 15        targetSdkVersion 27        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        //testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    testOptions {        unitTests {            includeAndroidResources = true        }    }}dependencies {    testImplementation "org.robolectric:robolectric:3.8"    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support:appcompat-v7:27.1.1'    implementation 'com.android.support.constraint:constraint-layout:1.1.3'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'    androidTestImplementation 'androidx.test:runner:1.1.0'    androidTestImplementation 'androidx.test:rules:1.1.0'    androidTestImplementation 'org.hamcrest:hamcrest-library:1.3'}build.gradle(项目:MyRestaurant)更正这里是两个测试。我不认为错误与测试本身有任何关系,而是与配置有关 - 不过我已经纠正了
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

我认为这是因为库androidxcom.android.support.test. 如果你想使用 jetpack,你必须将所有的测试库转换为 androidx,如果你不想那样,只需删除你的androidx库并使用所有com.android.support.test. 查看我在Android Instrumentation Testing 中的最新答案: No instrumentation Registration Error。希望这对你有帮助。


查看完整回答
反对 回复 2021-12-10
?
慕村9548890

TA贡献1884条经验 获得超4个赞

我有同样的问题,并测试其在类的健身方法,这些标准单元之间存在差异的测试中去app/src/test/java/<package>。与按钮交互、编辑文本等的UI测试需要 expresso 并进入app/src/androidTest/java/<package>。我花了好几遍阅读文档,浪费了一天时间才弄明白其中的区别。


|____app

  |

  | ____src 

  |   |____androidTest

  |   |  |____java

  |   |     |____<package>

  |   |        |____ MainActivityInstrumentationTest.java  # expresso here 

  |   |____test

  |      |____java

  |         |____<package>

  |            |____ MainActivityInstrumentationTest.java  # not here


查看完整回答
反对 回复 2021-12-10
?
波斯汪

TA贡献1811条经验 获得超4个赞

对我有用的是完全变回


安卓X



com.android.support


build.gradle 中的库


请注意:您可能需要重新导入类中的库,例如


import androidx.test.runner.AndroidJUnitRunner;


import android.support.test.runner.AndroidJUnitRunner;

还要确保在每次从 build.gradle 添加或删除库后始终清理和重建项目。


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 232 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信