我尝试在Android Studio 1.5.1中使用espresso 2.2.1运行测试.当我运行LoginActivityTest时,我收到此错误:当LoginActivity调用MyService.java并且MyService需要整数资源(即R.integer.number_of_days)时,会导致"android.content.res.Resources $ NotFoundException".此资源在gradle(版本1.5.0)模块的R.integer.xml文件中定义.
项目结构:
RootFolder/
?----projectA/
? ?----build.gradle
? ?----settings.gradle
? ?----src/androidTest/java/.../LoginActivityTest
? ?----src/main/java/.../LoginActivity
?
?----Module/
?----krill/
? ?----build.gradle
? ?----settings.gradle
? ?----src/main/
| ?----java/service/MyService.java
| ?----res/value/integers.xml
?
?----otherModule/
?----build.gradle
我的考试班:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity >{
@Rule
public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule(LoginActivity.class);
public LoginActivityTest() {
super(LoginActivity.class);
}
@Test
public void testConfigDialog() {
onView(withId(R.layout.login_custom_view));
onView(withId(R.id.id_username)).perform(clearText());
onView(withId(R.id.id_password)).perform(clearText());
}
}
Run Code Online (Sandbox Code Playgroud)
错误堆栈跟踪:
Running tests
Test running started
android.content.res.Resources$NotFoundException: Resource ID #0x7f090004
at android.content.res.Resources.getValue(Resources.java:1233)
at android.content.res.Resources.getInteger(Resources.java:989)
at it.company.android.lib.auth.infrastructure.AuthenticatorPreferences.<init>(MyService.java:36) …Run Code Online (Sandbox Code Playgroud) android gradle android-studio android-espresso android-instrumentation
我正在使用support:preference-v7:25.0.1并在我的应用程序中,我正在使用一个PreferenceActivity设置用户名EditText.当我运行我的应用程序时,在运行时我收到以下错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: it.company.android.aaaa, PID: 8023
java.lang.IllegalStateException: Dialog view must contain an EditText with id @android:id/edit
at android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onBindDialogView(EditTextPreferenceDialogFragmentCompat.java:67)
at android.support.v7.preference.PreferenceDialogFragmentCompat.onCreateDialog(PreferenceDialogFragmentCompat.java:148)
at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:312)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?我该如何解决这个问题?谢谢你们.
我用以下gradle文件创建了一个新的android项目:
android {
...
dexOptions {
javaMaxHeapSize "4g"
}
...
}
dependencies {
...
compile 'com.linkedin.dexmaker:dexmaker-mockito:2.16.0'
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我构建我的应用程序时,我得到:
在项目':app'中与依赖'com.android.support:multidex'冲突.app(1.0.3)和测试app(1.0.1)的已解决版本有所不同.有关详细信息,请参阅http://g.co/androidstudio/app-test-app-conflict.
我该如何解决这个问题?