gpt4 book ai didi

java - Web 服务的端到端测试

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

首次发布者和 TDD 采纳者。 :-) 我会有点冗长,所以请多多包涵。

我最近开始使用 Apache CXF 框架、Spring 和 Commons Chain 开发基于 SOAP 的网络服务来实现业务流程。我在这里面临的问题是测试 Web 服务——在单元测试和功能测试中进行测试。

我的第一次单元测试尝试完全失败了。为了保持单元测试的灵 active ,我使用了一个 Spring XML 文件来保存我的测试数据。另外,我没有创建要测试的“组件”实例,而是从我的 Spring 应用程序上下文中检索它们。包含数据的 XML 文件很快就失控了;用 XML 创建对象图被证明是一场噩梦。由于要测试的“组件”是从 Spring Application Context 中挑选出来的,因此每次测试运行都会加载所有我的应用程序中涉及的组件、使用的 DAO 对象等。另外,与单元的概念相反测试用例集中或仅集中于测试组件,我的单元测试开始访问数据库、与邮件服务器通信等。糟糕,非常糟糕。

我知道自己做错了什么,开始想办法改正。根据该论坛上的一篇帖子的建议,我查阅了 Java 模拟框架 Mockito,这样我就可以不用使用真正的 DAO 类和邮件服务器,而只是模拟功能。

随着单元测试的控制,这就引出了我的第二个问题;对数据的依赖。我一直在开发的 Web 服务逻辑很少,但严重依赖数据。例如,考虑我的组件之一:

public class PaymentScheduleRetrievalComponent implements Command {
public boolean execute(Context ctx) {
Policy policy = (Policy)ctx.get("POLICY");
List<PaymentSchedule> list = billingDAO.getPaymentStatementForPolicy(policy);
ctx.put("PAYMENT_SCHEDULE_LIST", list);
return false;
}
}

我的大部分组件都遵循相同的路线——从上下文中选择一个域对象,点击 DAO [我们在这里使用 iBatis 作为 SQL 映射器] 并检索结果。

那么,现在的问题是:
- 当单次插入或更新可能使数据库处于“不稳定”状态时,如何测试 DAO 类(尤其是在假设 3 次插入不同表实际上形成单个事务的情况下)?
- 移动大量数据(即从数据存储中无意识地插入/检索)的功能测试 Web 服务的实际标准是什么?

您的个人经历/评论将不胜感激。如果我在解释手头的问题时遗漏了一些细节,请告诉我。

-佐助

最佳答案

如果我是你,我会远离“上下文作为全局 HashMap ”“模式”。

看起来您正在测试持久性映射...

您可能想看看:testing persistent objects without spring

关于java - Web 服务的端到端测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812685/

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