junit测试:配置文件,带有指向资源的路径变量

xzabzqsa  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(444)

我有一个attributesloader类,它选择一个配置文件,检索变量并将其值设置为对象。
例子:

if (validatePropertyValue(configuration.getString(PROPERTY_RECORD_LIMIT))) {
                extractionAttributesBuilder.setRecordLimit(configuration.getInt(PROPERTY_RECORD_LIMIT));
            }

代码运行良好,但我很难为某些属性编写测试。因为代码拾取一个文件,所以在src/test/resources中有一个cfg文件。其中一个属性是指向目录的路径。。
我试着这样做:

path=new File(AttributesLoaderTest.class.getResource("/extractPath").getPath()));

但它不起作用,因为它查找路径:new file(attributesloadertest.class.getresource(“/extractpath”).getpath());没用的。。
我的问题是:
如何在文件中提供src/test/resources目录的路径而不进行硬处理?

path=/extractPath
rhfm7lfc

rhfm7lfc1#

一个选项可以是将根作为系统属性传递,并使用它组成文件的路径。
pom.xml 例如,可以按如下方式设置系统属性:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <systemPropertyVariables>
        <resourcesDirectory>${project.build.directory}/src/config/</resourcesDirectory>
        [...]
      </systemPropertyVariables>
    </configuration>
  </plugin>

在junit类中,您可以:

path=new File(AttributesLoaderTest.class.getResource(System.getProperty("resourcesDirectory") + "/extractPath").getPath()));

注意:尚未测试上述代码,因此可能包含一些错误。

相关问题