java - 允许依赖项中的类从我的项目的类路径加载测试资源

标签 java maven classpath

注意:StackOverflow 上有很多类似的问题。区别在于,这些问题涉及在自己的项目中使用另一个项目的资源。我想知道如何从我自己的项目所依赖的另一个项目中存在的类中引用我自己的项目的资源。例如:

我有一个 Maven 项目 (A),其结构如下:

src
  test
    java
      com
        mycompany
          myproject
            SimpleTest.java
    resources
      com
        mycompany
          myproject
            pictures
              mountain.jpg
pom.xml

在项目 A 的 pom.xml 文件中,我有一个如下的资源条目:

<testResources>
  <testResource>
    <directory>src/test/com/mycompany/myproject/pictures</directory>
  </testResource>
</testResources>

项目 A 还依赖于另一个 Maven 项目 (B)。在运行时,项目 A 中的 SimpleTest.java 类将使用以下命令直接从文件系统(而不是从 JAR 或 WAR 文件)启动:

C:\path\to\project\A\mvn clean test

这将从我公司的 Nexus 存储库下载项目 B 作为 JAR 文件,构建项目 A,并使用 TestNG 通过 Surefire 插件在 SimpleTest.java 中运行测试。

假设项目 B 中有一个名为“Helper”的类,其中包含一个“上传”函数,如下所示:

public class Helper {
  public static void upload(String filename) {
    Class clazz = this.getClass();
    ClassLoader classLoader = clazz.getClassLoader();
    InputStream inputStream = classLoader.getResourceAsStream(filename);
    // TODO: upload file
  }
}

现在让我们假设 SimpleTest.java 中的一个测试使用“mountain.jpg”作为参数来调用 Helper.upload。

当前 inputStream 最终为 null。但是,如果文件名参数与项目 B 内的资源文件之一匹配,则上传功能确实可以工作。

在我看来,项目 B 中的类(IE:Helper.class)的类路径上没有项目 A 的资源,即使项目 A 当前正在运行。这对我来说似乎违反直觉。我希望在项目 A 中运行测试时,项目 A 中的所有测试资源都可以从任何类中使用。我怎样才能实现这一点?

最佳答案

只需将 Helper 放入项目 A 中并从 B 中调用它。使其返回 InputStream,而不是对资源执行某些操作,以便 B 可以使用它执行测试操作。

请注意,Class.getResourceAsStream()可能更容易使用。

关于java - 允许依赖项中的类从我的项目的类路径加载测试资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27415064/

相关文章:

java - 将 Katalon Studio 更新至版本 5.9.1 - ClassNotFoundException

java - Webview 不断重新加载同一页面

hadoop - 使用 Java API 从 HDFS (Hortonworks Sandbox) 读取文件时出现异常

java - Clojure 中的编译问题

java - 获取整数数组而不是字符数组

java - org.springframework.web.servlet.PageNotFound noHandlerFound 未找到带有 URI 的 HTTP 请求的映射。我已将项目部署为 Maven 项目

java - 如何在 WEB-INF 文件夹中使用带有 JAR 的 taglibs JSTL/core

git - Maven Release Plugin 在 Jenkins Pipeline 中的使用

Java 项目 : should . 类路径 .project 文件被提交到存储库?

java - Java Web 服务的类路径、classNotFoundException