gpt4 book ai didi

android - 仪器测试 - setContentView() 上的空指针异常

转载 作者:行者123 更新时间:2023-11-28 20:52:53 25 4
gpt4 key购买 nike

我有一个位于 app/androidTest/java/myapp 的仪器测试。我有一个简单的测试方法:

public class LoginActivityTest {

private static final String EMAIL = "admin@gmail.com";
private static final String PASSWORD = "admin";

@Rule
public IntentsTestRule<LoginActivity> loginActivity = new IntentsTestRule<>(LoginActivity.class);

@Test
public void LoginWithProperCredentials() {
onView(withId(R.id.email_textView))
.perform(typeText(EMAIL));
onView(withId(R.id.password_login))
.perform(typeText(PASSWORD));
onView(withId(R.id.email_sign_in_button))
.perform(click());

intended(allOf(
hasExtra(GeneralConstants.AUTHENTICATED, true),
hasExtra(GeneralConstants.TOKEN, isA(String.class)),
toPackage("myapp")));
}
}

我已经升级了 Android 支持存储库,添加了必要的 androidTestCompile 依赖项以及默认的 testInstrumentationRunner ("android.support.test.runner.AndroidJUnitRunner"),并且我已经选择 Android Instrumentation Tests 作为 Build Variant。然而,尝试启动测试时出现 ResourceNotFoundException。我发现,是 onCreate(Bundle bundle) 中的 setContentView() 方法抛出了这个异常。

我一直在为这个问题苦苦挣扎。可能是什么原因?

编辑:

我检查过 myapp.test.R 中缺少导致 ResourceNotFoundException 的字段。此字段也在 myapp.R 中,但它具有不同的关联值(test.R 中的 0x7f040015 和 0x7f030015 - 这个缺失)。我试图显式导入:

import pl.kawowydzienniczek.kawowydzienniczek.test.R; 

然后试着写:

onView(withId(R.id.email_textView))
.perform(typeText(EMAIL));

给我一​​个错误,说 email_textView 无法解析。应该怎么做?

编辑 2:

我注意到注释掉以下依赖项

androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'

让它发挥作用。现在应该没问题,但为什么会这样,以及如何在不丢弃该库的情况下制作 Espresso ?

最佳答案

根据

For now it should be okay, but why is that and how to make espresso work without throwing that library out?

这是我的 build.gradle 配置:

dependencies {
ext.JUNIT_VERSION = '4.12'
ext.SUPPORT_VERSION = '24.1.1'
ext.ESPRESSO_VERSION = '2.2.2'

compile fileTree(dir: ulibs', include: ['*.jar'])
testCompile "junit:junit:$JUNIT_VERSION"
testCompile("org.robolectric:robolectric:3.0") {
exclude module: 'classworlds'
exclude module: 'commons-logging'
exclude module: 'httpclient'
exclude module: 'maven-artifact'
exclude module: 'maven-artifact-manager'
exclude module: 'maven-error-diagnostics'
exclude module: 'maven-model'
exclude module: 'maven-project'
exclude module: 'maven-settings'
exclude module: 'plexus-container-default'
exclude module: 'plexus-interpolation'
exclude module: 'plexus-utils'
exclude module: 'wagon-file'
exclude module: 'wagon-http-lightweight'
exclude module: 'wagon-provider-api'
}

compile "com.android.support:appcompat-v7:$SUPPORT_VERSION"
compile "com.android.support:design:$SUPPORT_VERSION"

androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile "com.android.support:support-annotations:$SUPPORT_VERSION"
androidTestCompile "com.android.support.test.espresso:espresso-core:$ESPRESSO_VERSION"
androidTestCompile "com.android.support.test.espresso:espresso-intents:$ESPRESSO_VERSION"
/**
* AccessibilityChecks
* CountingIdlingResource
* DrawerActions
* DrawerMatchers
* PickerActions (Time and Date picker)
* RecyclerViewActions
*/
androidTestCompile("com.android.support.test.espresso:espresso-contrib:$ESPRESSO_VERSION") {
exclude group: 'com.android.support', module: 'appcompat'
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'support-v7'
exclude group: 'com.android.support', module: 'design'
exclude module: 'support-annotations'
exclude module: 'recyclerview-v7'
}
compile "junit:junit:${JUNIT_VERSION}"
}

尝试排除与我已经完成的相同的组模块和组。

检查:https://github.com/piotrek1543/LocalWeather/blob/master/app/build.gradle

希望对你有帮助

关于android - 仪器测试 - setContentView() 上的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38706736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com