4

我想为集成测试建立一个基础设施。目前我们使用 maven 引导 tomcat,然后执行 httpunit 测试。但是当前的解决方案几乎没有缺点。

  1. 如果测试,提交到数据库的任何更改最终都需要手动回滚
  2. 在集成测试中运行代码覆盖率并不简单(我们使用的是声纳)。

我的目标是:

  1. 允许在测试之间自动回滚(希望使用 String @transaction 和 @rollback)
  2. 简单直接的代码覆盖率
  3. 使用 @RunWith 将从 JUnit 引导系统,而不是从外部引导系统
  4. 与实时 servlet 和 javascript 交互(我考虑从 httpuinit 切换到 selenium……)
  5. 合理的执行时间(至少不长于现有的执行时间)

上面的目标在我看来是合理的,并且对于许多 Java/J2ee 项目来说都是通用的。我正在考虑通过使用 Arquillian 和 Arquillian Spring Framework Extension 组件来实现这些目标。另请参阅https://github.com/arquillian/arquillian-showcase/

  1. 有没有人使用 Arquillian 和Arquillian Spring Framework Extension并有经验?
  2. 你能分享问题的最佳实践和经验教训吗?
  3. 任何人都可以提出上述方法的替代方法吗?
4

1 回答 1

0

我不能完全回答你的问题。只有一些提示

  1. 关于自动回滚。就我而言。使用 liquibase 在“hsqldb”或“h2”上初始化测试数据,可以设置为内存模式。然后无需回滚。

  2. 对于阿奎利安。这是一个很好的真实测试方法。我学到的是“ Arauillian Spring Framework Extension ”只是一个扩展。您必须绑定到特定容器,例如“jboss、glasshfish、tomcat”才能运行测试。但是我不知道如何申请一个不需要应用服务器支持的基于spring的javaSE程序。

我的教训是 jboss 端口冲突。因为 jboss-dist 被设置为 8080 作为默认的 http 端口。但是我们公司的代理与8080相同。所以我不能使用maven来获取jboss-dist工件。

希望其他人可以提供更多信息。

于 2015-09-17T01:01:53.573 回答