3

我有一个具有以下目录结构的 Eclipse 项目:

MyProj/
    src/main/java/
        com.me.myproject.widgets
            Widget.java
    src/main/config
        widget-config.xml
    src/test/java
        com.me.myproject.widgets
            WidgetTest.java
    src/test/config
        widget-test-config.xml

该类Widget从类路径上的任何位置读取其配置 (XML) 文件并使用它来配置其属性。

当我WidgetTest右键单击文件并转到Run As >> JUnit Test. 我假设我必须将它作为自定义的运行配置实际运行,并使用它自己配置的类路径,但我不确定这一点,因为我以前从未这样做过。

有谁知道我如何让自定义运行配置WidgetTest.java作为 JUnit 测试运行,并成功放置src/test/config/widget-test-config.xml在类路径上?提前致谢!

请注意,这个问题不是关于如何从运行时类路径中读取资源,而是关于如何首先在 Eclipse 的 JUnit Run Config 类路径中获取它!

4

2 回答 2

9

我的印象是,只要您有src/test/config/widget-test-config.xmlEclipse 认为是源文件夹的内容,它就应该已经在类路径中。

src/test 是 Eclipse 的源文件夹吗?如果是这样并且您仍然遇到问题,请尝试以下实验:

如果将 widget-test-config.xml 复制到 src 根目录下,Widget 类可以读取它吗?

如果是

那么这是测试文件夹不在类路径上的问题,您可能想尝试像这样手动添加它。

右键单击 WidgetTest 并选择Run As -> Junit Test。这应该会自动创建一个可在Run -> Run Configurations. 您修改它的 Classpath 条目以添加包含 .xml 文件的项目,如下所示:

在此处输入图像描述

如果不

如果,即使在将 .xml 文件移动到 src 根目录(即默认包)之后,您的小部件类也无法读取它,那么还有其他问题。在这种情况下,如果您可以在尝试读取 .xml 文件的 WidgetTest 中提供代码片段,那就太好了。

工作代码

这是一些工作代码:

public class A {

    @Test
    public void test() {
        InputStream stream = A.class.getResourceAsStream("/SomeTextFile.txt");
        System.out.println(stream != null);
        stream = Test.class.getClassLoader()
            .getResourceAsStream("SomeTextFile.txt");
        System.out.println(stream != null);
    }

}

以上在一个简单的 JAVA 项目中对我有用并且运行良好。(运行良好意味着在控制台上打印“真实”)

我正在为您创建一个 GITHub 存储库,以便您轻松地试用此代码。

带有测试项目的 GIT Hub 存储库

您应该能够在zip 中导入项目并查看代码是否正常工作。右键单击 Test 类A并单击Run As -> Junit Test,您应该true会在控制台中看到两个。

于 2012-08-17T12:50:42.027 回答
2

如果您的 WidgetTest 类是作为 JUnit 测试编写的,eclipse 将尝试自动将其作为 Junit 测试运行。如果没有,您应该右键单击包资源管理器中的类,选择运行方式 >> 运行配置 >> 选择 Junit

要运行 Junit 测试:

  • 在 JUnit3 中,该类应实现 TestCase 并且所有方法名称应以“test”开头

  • 在 JUnit4 中,所有方法之前都应该有一个 @Test 注解

将该配置文件放置在类路径中:如上所述设置运行配置时,转到右上方窗格中的“参数”选项卡,并在 VM 参数中指定类路径:

   -cp .:/path/to/the/config/file 

但是,如果该文件位于源目录的包中,则它应该自动包含在类路径中。

于 2012-08-17T12:50:13.657 回答