如何编写使用Robolectric测试MenuItem的alpha值变化的单元测试?

时间:2017-02-21 19:01:23

标签: android unit-testing robolectric

我有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告诉他们禁用它的原因。

0 个答案:

没有答案