【问题标题】:JUnit5: Where is the root of @CsvFileSource defined and can that definition be changed to refer to a different directory?JUnit5:@CsvFileSource 的根在哪里定义,可以更改该定义以引用不同的目录吗?
【发布时间】:2020-09-29 11:29:54
【问题描述】:

我作为 maven-quickstart 开始了一个项目并添加了 JUNIT5。 任何地方都没有“资源”文件夹。它使用 pom.xml 构建并达到“打包”目标。

一段时间后,其中一位测试人员想要添加一个从 CSV 文件读取的测试。 他在设置时遇到了一些麻烦,我只记得它会在测试/资源中查找。

我们现在都很好,但我不禁想知道:'test/resources' 是硬编码到 JUnit 中的吗?还是以某种方式源自项目原型?

有没有办法在项目设置、虚拟机设置或测试方法中编辑此引用?

【问题讨论】:

  • 将 CSV 文件放入src/test/resources 并通过this.getClass().getResourcesAsStream("/abc.csv") ..etc 读取文件。用于 JUnit Jupiter 中的 @CsvFileSource 注释 ...

标签: java maven csv testing junit


【解决方案1】:

来自https://junit.org/junit5/docs/5.3.0/api/org/junit/jupiter/params/provider/CsvFileSource.html

用于从一个或多个类路径资源加载逗号分隔值 (CSV) 文件。

使用此注解加载资源的方法(如果它们不在类路径中)是将它们放在类路径中。

所以,回答您的问题 - 是的,您可以通过更改类路径来更改此设置。

您如何做到这一点取决于您用于构建的内容,例如:

对于java,您使用java -cp ...,maven,gradle,ant都有不同的方式,由于您没有发布具体问题,我们无法给出具体答案。

编辑 - 由于您使用的是 Maven - 创建一个 src/test/resources(或 src/main/resources),除非您覆盖默认值,否则 Maven 会自动将这些部分作为测试类路径(和类路径,分别)。将您的文件放在 src/test/resources 中,它应该可以工作。

【讨论】:

  • 对不起(真的很抱歉,不是被动攻击 :) )我认为很明显我正在使用 maven ...我将把它添加到问题中。谢谢
  • 我强烈建议使用更新版本的 JUnit Jupiter(当前版本 5.7.0..)...junit.org/junit5/docs/current/user-guide
  • @DraxDomax - 请参阅我的编辑以获取专门针对 Maven 的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
相关资源
最近更新 更多