gpt4 book ai didi

maven-2 - 如何在 JUnit 测试中检索 Maven 属性?

转载 作者:行者123 更新时间:2023-12-02 02:44:30 24 4
gpt4 key购买 nike

我正在为文件解析器类编写测试。 parse 方法接收一个文件名作为参数,并且必须打开它才能解析它(废话)。

我已经编写了一个测试文件,将其放入项目目录内的 test/resources 目录中,并希望传递该文件来测试我的解析。由于这个项目在CVS中,并且会被其他人操作,所以我无法对文件路径进行硬编码,所以我考虑在我的测试中使用maven ${basedir} 属性来构建文件名。像这样的东西:

public void parseTest() {
...
sut.parse( ${basedir} + "src/test/resources/testFile" );
...
}

有人知道我怎样才能实现这个目标吗?

最佳答案

您有 2 个选择:

1) 通过系统属性将文件路径传递给测试 ( docs )

在你的 pom 中你可以做类似的事情:

<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<systemProperties>
<property>
<name>filePath</name>
<value>/path/to/the/file</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>

然后在您的测试中您可以执行以下操作:

System.getProperty("filePath");

2) 将文件放入与测试类相同的包下的 src/test/resources 中。然后您可以使用 Class.getResourceAsStream(String fileName) ( docs ) 访问该文件。

相对于选项 1,我强烈推荐选项 2。在我看来,通过系统属性将内容传递给测试是非常肮脏的。它将不必要的测试与测试运行者耦合起来,并且会在以后引起麻烦。从类路径加载文件是正确的方法,这就是 Maven 具有资源目录概念的原因。

关于maven-2 - 如何在 JUnit 测试中检索 Maven 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247346/

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