- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经获得了需要测试的现有 Java 应用程序(我们称之为“WebApp”)的源代码。它作为 WAR 文件部署到 Glassfish 中。这是客户代码,因此如果可以的话,我希望避免修改 WebApp POM。
所以我正在创建一个单独的项目(在 Eclipse 中)来进行测试。新项目需要直接在各种WebApp类上调用方法。我尝试将 WAR 文件引用为 Maven 依赖项,但在执行此操作后它不会出现在 Eclipse 的 Maven 依赖项中 - 见下文:
WebApp
src/main/java
...
pom.xml
WebAppTest
src/main/test
test.package.name
webAppAcceptanceTestIT.java
Maven Dependencies
junit-4.6.jar
mockito-all-1.9.5.jar
<<< No WebApp war/jars here >>>
WebAppTest 的 pom 中的依赖如下:
<dependency>
<groupId>...</groupId>
<artifactId>webapp</artifactid>
<version>...</version>
<type>war</type>
<scope>compile</scope>
</dependency>
已经尝试过 type=jar
和 scope=test
但这些都没有达到目标。不确定我是否遗漏了什么或以错误的方式解决这个问题?我应该改用 Maven 模块吗?不想把事情复杂化。当然,我可以作弊并将 WebApp 添加到 WebAppTest 的构建路径,但我想做对,以便它在部署时正常工作。
另一个问题——WebAppTest 应该打包为 WAR 还是 JAR?它将只包含执行 WebApp 代码和检查结果的测试。我认为它仍然需要作为 WAR 文件部署到 Glassfish 中是否正确?
最佳答案
您有几个选项,按优先顺序递减:
部署 war ,向它发出 HTTP 请求,分别检查数据库。无需访问 webapp 的类。这是最简洁且最易于维护的选项。
使用 Arquillian 部署应用程序以及您的测试并运行它们。您需要将 attachClasses
添加到原始 war 的 POM 中的 maven-war-plugin
配置中。您的测试项目需要依赖于 [artifactid]-classes
而不是 artifactid
。您的测试在 Glassfish 中运行(Arquillian 负责启动 Glassfish 和部署 war )。
Arquillian 有一点学习曲线。
使用类似于 Spring 的 HTTPInvoker 的东西将您要测试的类暴露给您的测试代码。您的测试在与 Glassfish 不同的 JVM 中运行,并使用 HTTP 连接到被测类。您仍然需要像容器内情况一样更改 POM。如果您的 WAR 不是基于 Spring 的,这可能会很棘手,并且对原始应用程序具有相当大的侵入性。您也可能会遇到序列化问题。
关于java - 如何为打包为WAR文件的Maven项目编写自动化验收测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361947/
我是一名优秀的程序员,十分优秀!