【问题标题】:Maven Spring Project - Testing daos using application-context.xml in modules that don't include webMaven Spring 项目 - 在不包含 web 的模块中使用 application-context.xml 测试 daos
【发布时间】:2012-11-17 23:24:00
【问题描述】:

Application-context.xml 在 web 模块中

pom
- 用户
- 具有业务逻辑和 daos 的各种其他模块
- web 只依赖于服务层。只和你的朋友聊天。

Web 将用户作为依赖项。我(不应该)不能让依赖项反过来,因为它是循环的,所以我如何使用 web 中的应用程序上下文进行测试?

我:
1. 复制数据源信息的应用程序上下文? (代码气味)
2. 将DB应用上下文放在依赖链底部的hibernate-dependency项目中?
3。其他答案?

2 号似乎是最好的选择。当一切都在一个服务模块中时,我的测试工作正常,但我试图获得更多的模块化,所以我将用户特定的服务重构为一个单独的模块。

感谢您的任何想法。 实际上,我选择在 web 和模块之间添加一个层,也称为服务,而不是在模块层中添加服务。我不认为这是典型的,但它提供了更好的信息隐藏并有助于强制执行打开/关闭。它与这个场景无关,所以我没有包含它。

工具:

  • Intellij 11
  • 朱尼特
  • Maven 2
  • 休眠 3
  • 春天 3
  • MySql5.5

【问题讨论】:

  • 我用我选择的解决方案留下了答案。
  • 仍然对更多输入感兴趣。我专业地在这个堆栈上完成的开发工作我没有做过太多的测试,所以我从来没有遇到过这个问题。

标签: spring testing maven junit


【解决方案1】:

将为用户模块执行依赖注入的上下文文件放在模块本身内。请记住,在 spring 中,您可以拥有很多上下文文件,并且可以导入它们。

要了解这背后的原因,请问问自己:我的应用程序的 Web 部分需要数据库还是后端需要数据库?

【讨论】:

  • 好的。但是如果也有文章模块怎么办(我应该澄清会有很多模块需要数据库。)然后我猜测重构说我想提取数据我的问题中的第二个源和会话工厂?
【解决方案2】:

我最终在单元和网络之间使用了一个服务模块来在那里存储数据库上下文。 Web 依赖于它,并且 Web 级别的应用程序上下文包括模块上下文和测试一样。我正在该层上进行服务级别集成测试。单元测试将使用模拟对象或 hql 来消除单元本身之外的任何内容。

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 2016-10-03
    • 2021-07-22
    • 2019-04-11
    • 1970-01-01
    • 2021-10-14
    • 2017-03-14
    • 1970-01-01
    • 2020-03-20
    相关资源
    最近更新 更多