如何在使用Espresso进行测试时提供模拟数据

Fin*_*ive 16 android android-espresso

我们有一个非常大的Android应用程序没有测试.我们正遭受典型的质量/太长的手动回归测试周期问题.

作为一名刚接触Android的服务器端开发人员,我想介绍开发人员测试.

我可以看到如何使用JUnit对普通Java代码进行单元测试.

但是,活动/碎片/适配器更加困难.

我观看了GTAC的Espresso视频并留下了深刻的印象并决定使用它.

我正在努力的是如何为我的测试用例提供模拟数据然后确认显示.

这甚至可能吗?似乎Espresso用于黑盒测试,因为(通常)黑盒测试由QA完成,因此限制了它对开发人员的使用(其目标受众).

Fri*_*ail 14

有一个名为mockwebserver的库,它允许您模拟服务器响应.Github:https: //github.com/square/okhttp/tree/master/mockwebserver

如果您使用的是gradle,则可以添加以下依赖项:

 androidTestCompile 'com.squareup.okhttp:mockwebserver:1.3.0'
Run Code Online (Sandbox Code Playgroud)

一些片段可以帮助:

设置模拟服务器

MockWebServer server = new MockWebServer(); 
Run Code Online (Sandbox Code Playgroud)

添加示例响应(仅在第一次调用服务器时起作用)

server.enqueue(new MockResponse().setBody("Hello World Response"));
Run Code Online (Sandbox Code Playgroud)

启动服务器

 server.play();
Run Code Online (Sandbox Code Playgroud)

获取服务器的URL以替换您正在使用的常规URL.

  URL baseUrl = server.getUrl("/");
Run Code Online (Sandbox Code Playgroud)

现在,以与调用非模拟Web服务相同的方式向使用BaseURL的任何内容发出请求,第一次调用该服务时,它将从上面返回响应.棘手的部分是你有确切数量的MockResponses排队等待实际请求你的应用程序.调试/观察代码时要小心,因为如果您单步调试代码,调试器实际上会弹出其中一个响应.

如果你无法搞清楚,这里有一个java web项目(在web而​​不是web上完全相同)我有一些基本的例子 .https://github.com/digitalbuddha/GitPullRank