【发布时间】:2011-02-15 15:25:48
【问题描述】:
我正在对包含自定义对话框的应用程序进行单元测试。该对话框继承自android.app.Dialog,但需要Activity 的特殊子类,我们称之为CustomActivity,它提供了它需要的一些功能。
我想避免从测试的应用程序中实例化其中一个活动,因为我已经对它们进行了测试。我是单元测试,而不是黑盒测试,所以我想在对话框中运行所有公共功能。但是,如果不先实例化对话框,这是不可能的,这需要 CustomActivity 实例。
我尝试创建 CustomActivity 的模拟子类并使用它来启动对话框,但我一直遇到同样的问题:测试应用程序不在测试应用程序中寻找活动,只在测试的应用程序。所以我得到“无法解决活动”。
我也尝试自己创建活动,但不使用Instrumentation.launchActivity,但这需要一个上下文,而我在InstrumentationTestCase 下没有。如果我改用AndroidTestCase,则提供的上下文(通过getContext)只是一个ContextWrapper,它似乎没有包含任何上下文,所以我回到了原点。我需要先实例化 Activity。
我用谷歌搜索了很多,我不敢相信我是第一个需要对Dialog 进行单元测试的人。在我看来,我需要类似于 ActivitiTestCase2 的东西,但对于提供必要上下文的对话框。
创建对话框的最佳方式是什么?还有另一种我没有尝试过的方法吗?有人有自定义对话框单元测试的示例吗?
【问题讨论】:
标签: android unit-testing dialog