我有MenuItem
这是一个发送按钮btnSend
,而我正在使用 Robolectric 来编写单元测试。我要做的单元测试是这样的:在btnSend
的左侧,有一个文本视图txtFiled
,当txtFiled
为空时,我添加了一个监听器,btnSend
alpha值为70,表示已禁用,当txtFiled
有一些非空格值时,btnSend
alpha值为255,表示已启用。我有一些像这样的代码
MenuItem sendItem = new RoboMenuItem(R.id.send);
sendItem.setIcon(getContext().getResources().getDrawable(R.drawable.ic_send_light));
然而,在我设置文本视图之前和之后:
activity.txtField.setText("To");
sendItem的alpha值为0;我想知道为什么会这样,以及如何为这种情况编写正确的单元测试。我调试它,发现监听器被调用。因此我猜这是一个假的创建菜单项。因此,它的alpha值不会改变。
我尝试使用阴影获取菜单项,但甚至无法获取菜单:
final CActivity activity = Robolectric.buildActivity(CActivity.class).create().start().resume().visible().get();
activity.mTo.setText("To");
MenuItem sendItem = Shadows.shadowOf(activity).getOptionsMenu().findItem(R.id.send);
PS:我知道要禁用我需要使用setEnabled
为false,但是用户仍然可以点击按钮,然后会弹出DialogFragment
告诉他们禁用它的原因。