Android OnClickListener从未使用浓缩咖啡调用过执行单击
我想在现有项目上第一次测试浓缩咖啡。 在我的Android OnClickListener从未使用浓缩咖啡调用过执行单击,android,android-espresso,Android,Android Espresso,我想在现有项目上第一次测试浓缩咖啡。 在我的HomeFragment(包含在HomeActivity中)中,我在显示另一个视图的按钮上设置了OnClickListener,我在模拟器中运行应用程序,一切正常。然后我想用浓缩咖啡来测试一下,我的OnClickListener似乎从来没有被叫来过。 我在开发者选项中删除了emulator中的动画选项,但espresso测试仍然失败,日志确认从未调用过onClick android.support.test.espresso.base.DefaultF
HomeFragment
(包含在HomeActivity
中)中,我在显示另一个视图的按钮上设置了OnClickListener,我在模拟器中运行应用程序,一切正常。然后我想用浓缩咖啡来测试一下,我的OnClickListener似乎从来没有被叫来过。
我在开发者选项中删除了emulator中的动画选项,但espresso测试仍然失败,日志确认从未调用过onClick
android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError:“在屏幕上向用户显示”与所选视图不匹配
预期:向用户显示在屏幕上
得到:“FilterPoupView{id=2131558573,res name=filter\u view,visibility=GONE,width=0,height=0,has focusable=false,has window focus=true,is clickable=false,is enabled=true,is focusable=false,is layout requested=true,is selected=false,root is layout requested=false,has input connection=false,x=0.0,child count=1}”
在家庭活动测试中
public class HomeActivityTest
extends ActivityInstrumentationTestCase2<HomeActivity> {
public HomeActivityTest() {
super(HomeActivity.class);
}
@Before
public void setUp() throws Exception {
super.setUp();
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
getActivity();
}
public void testOpenFilter() {
Log.e("Tests", "Check button_filter is clickable");
onView(withId(R.id.button_filter)).check(matches(isClickable()));
Log.e("Tests", "Click on button_filter");
onView(withId(R.id.button_filter)).perform(click());
Log.e("Tests", "Check filter_view visibility");
onView(withId(R.id.filter_view)).check(matches(isDisplayed()));
}
}
}
在HomeFragment
void initFilterButton(View view) {
mFilterButton = (Button) view.findViewById(R.id.button_filter);
Log.e("Tests", "initFilterButton");
mFilterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("Tests", "FilterButton onClick"); // <---- Never shown in logcat
mFilterPopupView.setVisibility(View.VISIBLE);
}
});
}
void initFilterButton(视图){
mFilterButton=(按钮)视图.findViewById(R.id.Button\u过滤器);
Log.e(“测试”,“初始化过滤器按钮”);
mFilterButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.e(“Tests”,“FilterButton onClick”);//什么是FilterPopupView?您确定调用了initFilterButton
吗?FilterPopupView是一个自定义的框架布局。我的日志Log.e(“Tests”,“initFilterButton onClick”)
显示在logcat中,而不是Log.e(“Tests”,“FilterButton onClick”)
。我确信调用了initFilterButton
,但没有onClick(视图v)
我将我的FilterPopupView更改为一个简单视图,结果是一样的……您发布的错误清楚地表明,FilterPopupView
已找到,但它已visibility=GONE
。因此,出于某种原因,visibility
未更新(在测试运行时)。您找到解决方案了吗?我也有同样的问题
void initFilterButton(View view) {
mFilterButton = (Button) view.findViewById(R.id.button_filter);
Log.e("Tests", "initFilterButton");
mFilterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("Tests", "FilterButton onClick"); // <---- Never shown in logcat
mFilterPopupView.setVisibility(View.VISIBLE);
}
});
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_filter"
style="@style/FilterAccess"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:clickable="true"
android:text="@string/filter_access" />
<fr.citylity.citylity.v2.ui.views.FilterPopupView
android:id="@+id/filter_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="8dp"
android:visibility="gone" />
</RelativeLayout>