21

我对 Maven 和 JUnit 测试有疑问。

我在 src/main/resources 中有一些文件,在运行 junit 测试时我想要这些文件。只有一个设置稍有不同的测试特定文件应否决相应的文件。所以我的想法是给这个测试文件赋予与主文件相同的名称,并将其放在与主文件相同(对应)位置的 src/test/resources 下。但现在我遇到了问题,我无法使用 src/main/resources 中的所有其他文件。

我认为他们 junit test 会将它们默认复制到 target/test-classes/ 当运行来自 src/test/resources 的文件时,但它没有。只有来自 src/test/resources 的文件,没有其他文件。

感谢您的任何想法,我该如何解决这个问题。

这是我如何尝试访问文件的示例

'

@BeforeClass
public static void globalSetUp() throws NamingException, SQLException {
    System.setProperty("solr.solr.home", "/solr/");

    cores = new CoreContainer(
            "/home/foo/workspace/reporting/target/test-classes/solr");
    cores.load();
    server = new EmbeddedSolrServer(cores, "reporting");

    loadDriver();
    connection = createAndConnectToDB();
    createDBSchema();

}

'

4

2 回答 2

28

问题出在 pom.xml 中。/main/resources 不是 testResource。

这是解决我的问题的片段:

<build>
    <testResources>
      <testResource>
        <directory>${project.basedir}/src/test/resources</directory>
      </testResource>
      <testResource>
        <directory>${project.basedir}/src/main/resources</directory>
      </testResource>
    </testResources>
</build>
于 2013-10-07T09:03:51.210 回答
10

实际上两者都存在/可用。src/main/resources 和 src/test/resources 中的文件。但是,当从类路径加载文件时,src/test/resources 中的任何文件都优先于 src/main/resources 中的文件。

很难完全回答您的问题,因为您没有提供很多详细信息(您是否使用 ContextConfiguration?如果不是,您将如何加载文件)但我建议您使用不同的名称并在其中显式加载该文件测试需要它。

您也可以使用相同的名称,但所有其他测试都需要显式使用 src/main/resources 路径来加载默认文件。

于 2013-09-24T10:51:10.683 回答