【发布时间】:2012-03-23 03:45:39
【问题描述】:
这是针对我的整个系统的一些高级 Web/Rest 测试,这些测试由 Jetty/Spring 提供支持。
我想做的是进行一个完全独立的测试,
- 启动启动应用程序的 Jetty
- 应用程序启动 Spring
- 测试使用 Webdriver / RestAssured 来命中应用程序和测试行为
- 测试检查数据库是否有更改的数据
我想要做的是让整个事情在单个 JVM 中运行,即我正在启动一个 org.eclipse.jetty.server.Server。
这是因为它很简单,并且避免了具有外部依赖项的测试(例如启动 Jetty)
这一切都很酷,但我讨厌我必须手动检查数据库......我想使用我的 DAO(或者可能是服务层)类,所以我不会重新编写数据库代码。
由于我的 DAO 已经由 Spring 在与测试用例相同的 JVM 中的 Jetty 实例中启动,因此我想获取该 ApplicationContext,然后将我的 DAO bean 拉出。
我在获取 ApplicationContext 时有点卡住,因为测试不是一个“Spring”测试。
人们对如何做到这一点有任何想法?
【问题讨论】:
-
为什么不在测试中构建另一个上下文并使用不同的 dao 类实例?您描述的场景听起来像是带有码头插件的 Maven 集成测试(故障安全插件)。
-
谢谢,但我特意避免使用 Maven 插件作为实验,以使测试自包含...目前您可以像运行任何其他测试一样运行 junit 测试,而不需要 maven 或任何其他用于管理事物的构建工具......这来自许多使用 Maven 集成测试模型的项目所经历的痛苦。我可能会将其移至 Gradle,这样我可以在不同类型的测试之间进行比 maven 提供的更多的分离。