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>