如何从JUnit测试中判断Eclipse项目是否已打开?

时间:2011-09-07 14:29:49

标签: java eclipse junit

我需要在Eclipse打开时从命令行运行Maven。由于这可能会混淆Eclipse,因此我将两者配置为使用不同的输出文件夹(Maven写入target,Eclipse m2e使用target-eclipse)。这非常有效。

但是在我的一个单元测试中,我需要加载属于项目的一部分而不是类路径的类。基本上,我构建了自己的URL类加载器。现在,我有一个问题:要添加哪个类文件夹?

如果项目已打开,target-eclipse/classes是正确的选择,否则我应该使用target/classes

假设我知道Eclipse文件夹和工作区文件夹。如何从Eclipse的子进程(不是Eclipse插件)中运行的Java代码中了解哪些项目是打开的,哪些不是?

由于在关闭项目时不删除文件夹,因此文件夹的存在不是一个好的标准。

[编辑] 基本上我的问题是:Eclipse必须将该信息存储在$workspace/.metadata$ECLIPSE_HOME/configuration中的某个位置。我需要查看哪个文件?

2 个答案:

答案 0 :(得分:1)

文件[Workspace_Home]/.metadata/.lock告诉您工作区已打开。

工作区中项目的列表和设置位于[Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects

好像开放的Java项目有一个文件夹[Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects/[Project_name]/.indexes,并且关闭了没有它。 - 我仔细检查了它,看来我错了。

但我刚刚检查了已关闭的Java项目有一个文件:[Workspace_Home]/.metadata/.plugins/org.eclipse.core.resources/.projects/[Project_name]/org.eclipse.jdt.core/state.dat,而打开的项目没有它。

答案 1 :(得分:-1)

我只想使用一些配置参数(例如系统属性),告诉文件夹在哪里。有关如何在使用Maven运行测试时传递系统属性,请参阅http://maven.apache.org/plugins/maven-surefire-plugin/examples/system-properties.html。此页面中的第一个示例显示如何将构建目录作为系统属性传递。