如何在Android中执行TDD?第3部分 - 模拟和集成测试(译)

833 阅读2分钟
原文链接: dimon94.github.io

原文

很久以后,这是系列的第三篇教程。 我希望你们都做得很好,享受教程系列(阅读,编码和改进)。

到目前为止,在本系列的第1部分和第2部分,为什么开发人员害怕重构代码,我们获得了为什么TDD至高无上,Android测试的类型,测试的位置,如何编写和运行测试等。

我们覆盖了单元测试到现在,接下来我们将转向集成测试,以验证演示者是否应对UI。

如图所示,我们可以创建用于登录的用户界面(我知道你会比这更好的用户界面)。

所以我们将编写一些与UI相关的代码。 我们在View和Presenter之间签有合同,即LoginView,如下所示。

现在我们将LoginView实现为我们的Activity,如下所示。

我们的Presenter实现如下所示

您将在LoginPresenterTest中发生错误,因为我们有构建使用LoginView对象的Presenter的构造函数。

为了摆脱这个错误,我们必须在创建演示者对象时将LoginView的对象传递给Presenter。 所以我们必须模拟LoginView.Here来模仿😍。

什么是模仿?

你有一个对象,你想要测试的方法,这些方法都依赖于其他对象。 您创建依赖对象的模拟,而不是创建该依赖关系的实际实例。 模拟对象用于单元测试。

为了模仿,我们将使用Mockito。
将以下testCompile依赖项添加到应用程序的build.gradle

testCompile ‘org.mockito:mockito-core:1.10.19’

现在我们模仿我们的LoginView,如下所示

Ooho😳,😎我们有我们的模拟(神奇)登录对象,可以传递给Presenter。 所以我们的实现就像下图

运行测试显示绿色信号继续。

集成测试(Presenter和View之间)

要验证Presenter调用正确的View方法后,我们使用verify()。

在上面的代码图中,验证方法确保在视图对象上调用showLoginSuccessMessage(),这确保我们的Presenter正确地与View集成。

其他测试如下

End