我正在测试包含自定义对话框的应用程序。此对话框继承自android.app.Dialog
,但需要Activity
的特殊子类,我们称之为CustomActivity
,它提供了所需的一些功能。
我想避免从测试的应用程序中实例化其中一个活动,因为我已经对它们进行了测试。我是单元测试,而不是黑盒测试,所以我想在对话框中运行所有公共函数。但是,如果不首先实例化对话框并且需要CustomActivity
实例,则无法做到这一点。
我尝试创建CustomActivity
的模拟子类并使用它来启动对话框,但我一直遇到同样的问题:测试应用程序不在测试应用程序中查找活动,仅在测试的应用程序中。所以我得到“无法解决活动”。
我也尝试自己创建活动,而不使用Instrumentation.launchActivity
,但这需要一个上下文,我在InstrumentationTestCase
下没有。如果我改为使用AndroidTestCase
,那么提供的上下文(通过getContext
)只是一个ContextWrapper
,它似乎没有包含任何上下文,所以我回到原点。我需要先实例化活动。
我用谷歌搜索了一下,我无法相信我是第一个需要对Dialog
进行单元测试的人。在我看来,我需要类似于ActivitiTestCase2
的东西,但需要提供必要上下文的对话框。
创建对话框的最佳方法是什么?还有其他方法我还没有尝试过吗?有没有人有自定义对话框单元测试的例子?
答案 0 :(得分:1)
这听起来像是面向对象的问题,而不是Android问题。我认为你的核心问题可能是你们之间的紧密联系。尝试在CustomActivity前面引入一个接口,该接口只公开对话框所需的函数,然后在测试中模拟接口,而不是尝试创建活动本身的模拟子类。祝你好运!