gpt4 book ai didi

java - 如何为打包为WAR文件的Maven项目编写自动化验收测试?

转载 作者:行者123 更新时间:2023-11-28 20:32:22 24 4
gpt4 key购买 nike

我已经获得了需要测试的现有 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=jarscope=test 但这些都没有达到目标。不确定我是否遗漏了什么或以错误的方式解决这个问题?我应该改用 Maven 模块吗?不想把事情复杂化。当然,我可以作弊并将 WebApp 添加到 WebAppTest 的构建路径,但我想做对,以便它在部署时正常工作。

另一个问题——WebAppTest 应该打包为 WAR 还是 JAR?它将只包含执行 WebApp 代码和检查结果的测试。我认为它仍然需要作为 WAR 文件部署到 Glassfish 中是否正确?

最佳答案

您有几个选项,按优先顺序递减:

(仅)使用 HTTP 进行验收测试

部署 war ,向它发出 HTTP 请求,分别检查数据库。无需访问 webapp 的类。这是最简洁且最易于维护的选项。

容器内测试

使用 Arquillian 部署应用程序以及您的测试并运行它们。您需要将 attachClasses 添加到原始 war 的 POM 中的 maven-war-plugin 配置中。您的测试项目需要依赖于 [artifactid]-classes 而不是 artifactid。您的测试在 Glassfish 中运行(Arquillian 负责启动 Glassfish 和部署 war )。

Arquillian 有一点学习曲线。

远程公开 WebApp 类

使用类似于 Spring 的 HTTPInvoker 的东西将您要测试的类暴露给您的测试代码。您的测试在与 Glassfish 不同的 JVM 中运行,并使用 HTTP 连接到被测类。您仍然需要像容器内情况一样更改 POM。如果您的 WAR 不是基于 Spring 的,这可能会很棘手,并且对原始应用程序具有相当大的侵入性。您也可能会遇到序列化问题。

关于java - 如何为打包为WAR文件的Maven项目编写自动化验收测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14361947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com