Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何嘲笑一个;服务器-安卓设备“;表达_Java_Android_Junit_Mocking - Fatal编程技术网

Java 如何嘲笑一个;服务器-安卓设备“;表达

Java 如何嘲笑一个;服务器-安卓设备“;表达,java,android,junit,mocking,Java,Android,Junit,Mocking,我在Android上有一个应用程序,它通过套接字与服务器通信。我还实现了一种协议缓冲区类型的消息,以获取更多的通信信息 我还没有在服务器上实现响应android客户端请求的所有逻辑。因此,我无法在客户端测试发送请求时会发生什么。。我可以用什么来帮我测试这个?是否有一种(简单的)创建模拟服务器的方法来模拟响应 我被告知要读一些关于Junit的内容,这里也有:http://developer.android.com/guide/topics/testing/testing_android.html

我在Android上有一个应用程序,它通过套接字与服务器通信。我还实现了一种协议缓冲区类型的消息,以获取更多的通信信息

我还没有在服务器上实现响应android客户端请求的所有逻辑。因此,我无法在客户端测试发送请求时会发生什么。。我可以用什么来帮我测试这个?是否有一种(简单的)创建模拟服务器的方法来模拟响应

我被告知要读一些关于Junit的内容,这里也有:http://developer.android.com/guide/topics/testing/testing_android.html 但我不确定这是一条正确的道路

多谢各位

edit1

抱歉,写这个话题的时候很匆忙。 谢谢你的回答,但我觉得我的情况有点不同。 通信协议为TCP,消息类型为“协议缓冲区”,而不是XML或JSON。所以Maque看起来很酷,但在这里不可行。 服务器端也是在C#而不是Java上开发的


再次感谢您

如果您的服务器也使用Java(servlet/JSP),您可以共享消息处理逻辑并在其上定义一些单元测试。

我们必须在开发中解决类似的问题。你有几个选择——这取决于你的情况和你想测试的内容

在我们的一些测试中,我们使用了一个运行在主机上的非常简单的HTTP服务器(我们的协议运行在HTTP之上),该服务器配置了对某些请求的固定响应。我们使用Python的SimpleHTTPServer类编写了它。这种方法的好处是,您正在进行完整的端到端测试,包括Android网络堆栈。缺点是设置起来很麻烦(我们有一个测试工具,可以在开发机器上运行,启动服务器,在模拟器或设备上运行测试,并收集结果)

如果要模拟设备本身上的低级代码,请查看是否有模拟和依赖项注入。有一个完整的例子说明了如何做到这一点


最后,您可能能够在开发机器上使用和运行测试。缺点是,您的测试不会在Android设备上运行,并且很难有效地测试代码与操作系统之间的交互。

如果您使用HTTP作为套接字/服务器协议,那么您可能需要检查一个名为Maque的新应用程序。它旨在帮助测试和开发HTTP和数据驱动的应用程序。它有一个内置的HTTP1.1服务器,并提供一个UI,允许您创建API和测试请求,而无需编写或部署服务器堆栈

如果你像Paul一样运行自动化测试,那么你可能会面临一些相同的挑战:启动应用程序,然后运行应用程序,然后关闭应用程序,但是对于开发和常规测试,它应该能够处理你所需要的

您可以在这里获得跨平台(OSX、Windows、Linux)测试版:

现在就查看Square's,OkHttp的一部分