您好我正在尝试运行Espresso测试,但它失败了,我确定问题是什么或我做错了什么。
当我运行测试时,我在控制台中获得以下内容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
它说它失败了,因为我需要在这个活动中使用一个Theme.AppCompat主题(或后代),并在stacktrace第54行显示setContentView(R.layout.activity_login);
<application android:theme="@style/AppTheme">
<activity
android:name=".Login.LoginActivity"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustPan"></activity>
我已在应用程序中设置主题,甚至通过在活动
上设置主题来确保 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
我的主题父是“Theme.AppCompat”
public class LoginActivity extends AppCompatActivity
所以当我使用来自Theme.AppCompat的主题
时,我对此失败的原因有点困惑这里也是我从AppCompactActivity
扩展的活动androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
androidTestCompile 'com.android.support:appcompat-v7:23.1.1'
androidTestCompile 'com.android.support:design:23.1.1'
androidTestCompile 'junit:junit:4.12'
androidTestCompile "com.crittercism.dexmaker:dexmaker:1.3"
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.3"
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.3"
androidTestCompile 'org.mockito:mockito-core:1.10.19'
我在Gradle for androidTest的家属是
@RunWith(AndroidJUnit4.class)
@LargeTest
public class LoginNavigationForgotPasswordTest {
@Rule
public ActivityTestRule<LoginActivity> mActivityRule = new ActivityTestRule(LoginActivity.class);
@Test
public void testClick() {
// Find Button and Click on it
onView(withId(R.id.login_forgot_password_button)).perform(click());
// Find TextView and verify the correct text that is displayed
onView(withId(R.id.forgot_top_title)).check(matches(withText("Forgot Password")));
}
}
这是我试图运行的测试
{{1}}
也许有些事情显而易见我做错了。
任何帮助都将不胜感激。
顺便说一下应用程序在运行时工作正常
答案 0 :(得分:1)
不确定修复了什么,但我做了一些更改并设法让设置正常运行。
之前:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
后:
<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
之前:
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
androidTestCompile 'com.android.support:appcompat-v7:23.1.1'
androidTestCompile 'com.android.support:design:23.1.1'
androidTestCompile 'junit:junit:4.12'
androidTestCompile "com.crittercism.dexmaker:dexmaker:1.3"
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.3"
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.3"
androidTestCompile 'org.mockito:mockito-core:1.10.19'
后:
compile 'com.android.support:support-annotations:23.2.1'
androidTestCompile 'com.android.support:support-annotations:23.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2'){
exclude group: 'com.android.support', module: 'appcompat'
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'design'
exclude group: 'com.github.afollestad.material-dialogs', module: 'core'
exclude group: 'com.github.afollestad.material-dialogs', module: 'commons'
exclude group: 'com.github.traex.rippleeffect', module:'library'
exclude group: 'com.balysv', module:'material-ripple'
exclude module: 'recyclerview-v7'
}
androidTestCompile ('com.android.support.test:runner:0.5'){
}
androidTestCompile ('com.android.support.test:rules:0.4.1'){
}
androidTestCompile ('junit:junit:4.12')
androidTestCompile "com.crittercism.dexmaker:dexmaker:1.3"
androidTestCompile "com.crittercism.dexmaker:dexmaker-dx:1.3"
androidTestCompile "com.crittercism.dexmaker:dexmaker-mockito:1.3"
androidTestCompile 'org.mockito:mockito-core:1.10.19'
我还添加了以下resolutionStrategy
configurations.all{
resolutionStrategy {
force 'org.hamcrest:hamcrest-core:1.1', 'org.hamcrest:hamcrest-core:1.3'
}
}
事后我还可以通过这种方式添加支持注释
configurations.all{
resolutionStrategy {
force 'com.android.support:support-annotations:23.2.1','org.hamcrest:hamcrest-core:1.1', 'org.hamcrest:hamcrest-core:1.3'
}
}
答案 1 :(得分:0)
我有同样的问题,但我的解决方案只是在AndroidTest的清单中放置一个基于AppCompat的主题,就像我在Android应用程序清单中使用它一样。对于我的项目,应用程序清单不用于Espresso测试,而是使用AndroidTest清单。
答案 2 :(得分:0)
如果您不想弄乱您的主题设置或清单,那么有一个更简单的解决方案。
在运行时设置主题,如下所示:
@Before
fun setUp() {
context = InstrumentationRegistry.getInstrumentation().targetContext
context.setTheme(R.style.Theme_AppCompat_Light)
}