如何testingToast消息的外观

有人会知道如何testing一个活动的吐司消息的外观?

我使用的代码类似于在这个问题上发布的OP,用于testing从一个活动到另一个活动的程序stream。 我也希望能够testing特定活动的吐司消息。

Solutions Collecting From Web of "如何testingToast消息的外观"

有人会知道如何testing一个活动的吐司消息的外观?

你不能 – 对不起。 我的意思是说,没有办法去问Android,“嘿,吐司是什么样的,看起来是什么样的?”

嗯,实际上有可能testing烤面包的外观。 只需创build一个Toast的子类(例如MyOwnToast),然后在程序中使用这个而不是Toast。 在这个子类中,你可以覆盖show()方法来通知你Toast正在显示。

此外,您可以将Toast存储在show()方法中,以ToastDatabase单例types的forms存储Toast,也可以在其显示和销毁之后显示视图(没有用Toaststesting过,但我经常这样做其结果意图是让它们在被销毁之后继续进行进一步的testing – 所以用Toast来实现这一点应该没有问题)。

注意:也许你必须克隆Toast对象或ToastDatabase对应的视图,因为在Toast被销毁之后它可能是空的。 希望这可以帮助!

我们实际上现在可以使用robolectric来testing吐司消息。 下面的例子是我们的团队现在是这样做的:

  @Test public void ccButtonDisplaysToast() throws NullPointerException { Button ccRedButton = (Button) findViewById(R.id.cc_red); cc_red.performClick(); --> this calls the actual onClickListener implementation which has the toast. ShadowLooper.idleMainLooper(YOUR_TIME_HERE); --> This may help you. assertThat(ShadowToast.getTextOfLatestToast().toString(), equalTo("TEST_YOUR_TEXT_HERE")); } 

希望这可以帮助

我检查下列作品:

 if(someToast == null) someToast = Toast.makeText(this, "sdfdsf", Toast.LENGTH_LONG); boolean isShown = someToast.getView().isShown(); 

您可以selectRobolectrictesting框架。对于检查烤面包,您可以使用如下:

 assertTrue(ShadowToast.showedCustomToast("message", R.id.message)); //R.id.message: textView ID 

你可以检查吐司显示的消息

 ShadowToast.showedToast("expected message") 

如果您正在使用自定义的吐司

 ShadowToast.showedToast("expected message", R.id.yourToastId) 

我正在使用它:

 wait_for_text("Notification message to be verified", timeout: 30) 

这是部分达到目的的另一种方式。