gpt4 book ai didi

junit - 在单元测试期间访问 webapp 文件夹中的文件

转载 作者:行者123 更新时间:2023-12-04 10:44:38 27 4
gpt4 key购买 nike

我在 StackOverflow 上看到过这个问题的几个变体,但没有一个准确描述我的场景,或者提供适合我的解决方案。

我正在构建一个 Java EE 网络游戏。我在构建过程中使用 JUnit 进行单元测试。在我的 webapp 文件夹中,我有用户通过 HTTP GET 请求访问的 Assets 。在我的源代码中,我有相应的 Java 类来实现这些 Assets 的逻辑。

例如,我有一个名为 CookingPot 的类,它在我的游戏中实现了 cooking 锅的逻辑。在 webapp 文件夹中,我有一个文件为用户提供 cooking 锅的媒体和内容,例如:

webapp/assets/items/CookingPot.svg (an image of the cooking pot)
webapp/assets/items/CookingPot.html (an HTML description of the cooking pot)

在单元测试期间,我想确保对于每个游戏项目(在本例中为 CookingPot 项目),在 webapp 文件夹中的正确位置都有一个 SVG 和 HTML 文件。

我该如何实现这个测试? JUnit 测试在 Maven 构建环境中执行,该环境不提供用于测试的 Tomcat 服务器,因此无法通过 HTTP 访问它们。我试过了:
URL svg = getClass().getResource("/webapp/assets/items/CookingPot.svg");
URL svg = getClass().getResource("webapp/assets/items/CookingPot.svg");

但那些返回空值。

我有一种感觉,我在这里缺少一些简单的东西,但我不知道它是什么。当然必须有一种方法来测试这些文件在构建过程中是否存在?

在此先感谢您的帮助!

最佳答案

src/main/webapp文件夹不是类路径的一部分(默认情况下)。因此,您无法使用问题中提供的代码访问它们。如果您的文件是 src/main/resources 的一部分您可以通过 .getResource("") 访问它们来自您的单元测试,无需进一步配置。

修改 Surefire 插件并包含 webapp文件夹可以使用您当前的设置解决您的问题(就像这里提到的: Unit Test in Maven requires access to the src/main/webapp Directory ):

  <plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>src/main/webapp</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>

关于junit - 在单元测试期间访问 webapp 文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59767662/

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