Java / Eclipse:如何为JUnit测试配置Run Configuration的Classpath?
我有一个具有以下目录结构的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
的测试用例(全部用JUnit编写)在Eclipse中运行,当我右键单击该文件并转到Run As >> JUnit Test
。 我假设我必须将其作为具有自己配置的类路径的自定义运行配置实际运行,但我不确定,因为我以前从未这样做过。
有没有人知道我如何获得自定义运行配置来运行WidgetTest.java
作为JUnit测试,并成功将src/test/config/widget-test-config.xml
放在类路径上? 提前致谢!
请注意,这个问题不是关于如何从运行时类路径中读取资源, 而是关于如何在Eclipse的JUnit Run Config类路径中首先获取它!
我的印象是,只要你在Eclipse认为是源文件夹的内部有src/test/config/widget-test-config.xml
,它就应该已经在类路径上了。
src / test是Eclipse的源文件夹吗? 如果是,但您仍然遇到问题,请尝试以下实验:
如果将widget-test-config.xml复制到src根目录,Widget类可以读取吗?
如是
那么这是一个测试文件夹不在类路径上的问题,你可能想尝试手动添加它。
右键单击WidgetTest并选择Run As -> Junit Test
。 这应该会自动创建一个可在Run -> Run Configurations
访问的Junit Run -> Run Configurations
。 您修改它的Classpath条目以添加包含.xml文件的项目,如下所示:
如果不
如果,即使将.xml文件移动到src根目录(即默认包)之后,您的窗口小部件类也无法读取它,那么还有其他错误。 在这种情况下,如果您可以在WidgetTest中提供试图读取.xml文件的代码片段,那就太棒了。
工作守则
这里有一些工作代码:
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项目中运行良好。 (正常运行意味着在控制台上打印’true’)
我正在为您创建一个GITHub repo,以便轻松地尝试这个代码。
GIT Hub Repo与测试项目
您应该能够在此 zip中导入项目并查看代码是否正常工作。 右键单击Test类A
并单击Run As -> Junit Test
,您应该在Console中看到两个true
。
如果您的WidgetTest类被编写为JUnit测试,eclipse将尝试自动将其作为Junit测试运行。 如果没有,则应右键单击包浏览器中的类,选择Run As >> Run Configuration >>选择Junit
要运行Junit测试:
-
在JUnit3中,该类应该实现TestCase并且所有方法名称应该开始“test”
-
在JUnit4中,所有方法都应该以@Test注释开头
要将该配置文件放在类路径中:如上所述设置“运行配置”时,请转到右上方窗格中的“参数”选项卡,并在VM参数中指定类路径:
-cp .:/path/to/the/config/file
但是,如果该文件位于源目录中的包中,则它应自动包含在类路径中。
- sbt中的工作目录
- 无法在以感叹号结尾的目录中打开资源(!)
- java.lang.ClassNotFoundException / NoClassDefFoundError for com / fasterxml / jackson / databind / ObjectMapper with Maven
- 使用Eclipse在Manifest文件中构建ClassPath变量
- Ant无法找到外部定义的taskdef所需的类
- 在调用Weka时无法找到或加载主类
- jar文件外的application.properties如何
- 执行Mavenunit testing,并将classpath设置为生成的项目JAR
- 又一个Ant + JUnit类路径问题