gpt4 book ai didi

testing - 客户端-服务器集成测试 : mock or not?

转载 作者:行者123 更新时间:2023-11-28 19:40:35 25 4
gpt4 key购买 nike

我正在处理两个应用程序的项目:android 应用程序(客户端)和 rest 服务(服务器)。我的 Android 应用使用了我的休息服务。

这两个应用程序都经过单独测试,以确保它们按预期开展业务。在服务器测试期间,我准备请求并检查服务器响应。在客户端测试期间,我设置了一个简单的 http 模拟服务器,并根据不同的模拟响应测试客户端的请求。

现在,这项技术非常有效。它给了我我喜欢的灵 active 。我可以使用不同的测试框架和持续集成环境。但是有一个弱点。在(客户端和服务器)测试用例中,我指定了相同的 api。我假设例如

GET /foo-list.json

将返回带有 json 的 HTTP 200

[{
id: 1,
name: foo1,
}, {
id: 2,
name: foo2
}]

所以我重复一遍。如果我更改响应格式,我的客户端测试将不会失败。

我的问题是关于测试这种情况的良好做法。如何在不牺牲独立测试灵 active 的情况下进行真正的集成测试。 我应该使用模拟服务器还是使用我的 rest 服务的真实实例来测试客户端?

请分享您的专业经验。

最佳答案

在您的场景中,您应该继续编写单元测试来测试各个类,并编写集成测试来测试多个应用层(例如业务层和数据库层)之间的互操作。

你问:

"How to make true integration tests without sacrificing flexibility of independent tests"

你的所有代码都应该使用抽象,这样你就可以使用依赖注入(inject)来使用模拟依赖完全隔离地对类进行单元测试。模拟的使用将确保这些测试将保持独立,即不耦合到任何其他类。因此,采用这种方法,将使用最终具体类的集成测试不会影响使用模拟类的单元测试。

还有:

"Should I test client with mocked server or with a real instance of my rest service?"

除了单元和集成测试之外,您还应该执行客户端-服务器集成测试;我使用自动验收测试来执行此操作。使用诸如 Cucumber 之类的测试框架(另请查看 calabash-android ,它是专门为测试移动应用程序而编写的)您可以编写测试来测试与客户端(您的 Android 应用程序)和服务器交互的特定功能和场景(您的 RESTful 服务)。这些客户端-服务器集成测试将启动和停止客户端和服务器的具体实例。

关于testing - 客户端-服务器集成测试 : mock or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19392508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com