2

我一直在尝试让一些 Selenium 系统测试用例在集成测试阶段运行。我希望 Cargo 将 WAR 部署到本地 Jetty 安装。然后我希望我的测试用例运行,使用 Spring 配置文件的测试版本。目标是针对 web 应用程序运行测试,模拟所有外部依赖项,并使用 HSQL 作为数据库。

我认为这种方法是错误的:我认为在此阶段创建的 WAR 文件是“生产 WAR”,它不包括测试资源。这样做的最佳方法是什么?在“测试”阶段构建 WAR 的“测试版本”的 POM 中创建一个新配置文件?有没有例子说明如何做到这一点?我应该采取不同的方法吗?

4

1 回答 1

0

我会使用不同的方法。使用“测试资源”进行测试的问题在于您没有测试您的真实应用程序。您的资源中可能有很多重要的“代码”,特别是如果您使用的是 Spring。我会为您的测试使用特殊配置来测试“生产 WAR”。每个外部系统(数据库、外部 Web 服务等)都应该是可配置的(使用 JNDI、外部配置文件等),而不是硬编码在 WAR 中。

以下 Maven 配置应该可以完成工作:

  1. 使用exec-maven-plugin和 exec:exec 插件,您可以启动 HSQLDB。
  2. 可以使用sql-maven-plugin初始化数据库(模式和表创建、数据插入) 。
  3. 然后您可以使用 Cargo 在 Jetty 实例中启动您的 WAR。
  4. 使用 maven-failsafe-plugin,您可以启动使用 Selenium 的 JUnit 测试。

当然,您还需要启动所有其他外部系统的模拟版本。

于 2013-06-08T07:36:14.997 回答