我试图在Android中对自定义Dialog进行单元测试,但我似乎无法实例化它

时间:2011-02-15 15:25:49

标签: android unit-testing dialog

我正在测试包含自定义对话框的应用程序。此对话框继承自android.app.Dialog,但需要Activity的特殊子类,我们称之为CustomActivity,它提供了所需的一些功能。

我想避免从测试的应用程序中实例化其中一个活动,因为我已经对它们进行了测试。我是单元测试,而不是黑盒测试,所以我想在对话框中运行所有公共函数。但是,如果不首先实例化对话框并且需要CustomActivity实例,则无法做到这一点。

我尝试创建CustomActivity的模拟子类并使用它来启动对话框,但我一直遇到同样的问题:测试应用程序不在测试应用程序中查找活动,仅在测试的应用程序中。所以我得到“无法解决活动”。

我也尝试自己创建活动,而不使用Instrumentation.launchActivity,但这需要一个上下文,我在InstrumentationTestCase下没有。如果我改为使用AndroidTestCase,那么提供的上下文(通过getContext)只是一个ContextWrapper,它似乎没有包含任何上下文,所以我回到原点。我需要先实例化活动。

我用谷歌搜索了一下,我无法相信我是第一个需要对Dialog进行单元测试的人。在我看来,我需要类似于ActivitiTestCase2的东西,但需要提供必要上下文的对话框。

创建对话框的最佳方法是什么?还有其他方法我还没有尝试过吗?有没有人有自定义对话框单元测试的例子?

1 个答案:

答案 0 :(得分:1)

这听起来像是面向对象的问题,而不是Android问题。我认为你的核心问题可能是你们之间的紧密联系。尝试在CustomActivity前面引入一个接口,该接口只公开对话框所需的函数,然后在测试中模拟接口,而不是尝试创建活动本身的模拟子类。祝你好运!