プロジェクトの作成時にjunit起動構成を自動的に作成するEclipse(Juno)プラグインを作成しました。ワークスペースで変更をリッスンし、新しい Java プロジェクトが作成されたら、対応する起動構成を作成するプロセスを開始します。
public static void create(IProject project) {
ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType launchType = manager
.getLaunchConfigurationType(JUNIT_LAUNCH_IDENTIFIER);
try {
ILaunchConfigurationWorkingCopy workingCopy = launchType.newInstance(null, project.getName());
List<IResource> resources = new ArrayList<IResource>();
resources.add(project);
IResource[] resourcesArray = toArray(resources);
workingCopy.setMappedResources(resources.toArray(resourcesArray) );
workingCopy.setAttribute("org.eclipse.jdt.junit.CONTAINER", project.getName().replace("#", "\\#"));
workingCopy.setAttribute("org.eclipse.jdt.junit.KEEPRUNNING_ATTR", false);
workingCopy.setAttribute("org.eclipse.jdt.junit.TESTNAME", "");
workingCopy.setAttribute("org.eclipse.jdt.junit.TEST_KIND", "org.eclipse.jdt.junit.loader.junit4");
workingCopy.setAttribute("org.eclipse.jdt.launching.MAIN_TYPE", "");
workingCopy.setAttribute("org.eclipse.jdt.launching.PROJECT_ATTR", "");
workingCopy.setAttribute("org.eclipse.jdt.launching.VM_ARGUMENTS", "-Xms128m -Xmx512m -DSYS_DRIVE=${env_var:SYS_DRIVE} " +
"-DAPPL_DRIVE=${env_var:APPL_DRIVE} -DDATA1_DRIVE=${env_var:DATA1_DRIVE} -DSYS_DIR=${env_var:SYS_DIR} " +
"-DEXT1_DRIVE=F: -DTESTDATA_ROOT=${workspace_loc:trunk#IS+LVIS/testdata}");
workingCopy.doSave();
} catch (CoreException e) {
log.log(Level.WARNING,
"Unable to create a new launch configuration.", e);
}
}
メソッド workingCopy.setMappedResources() によって、対応する IProject をパラメーターとして指定します。プラグインを試し、「testProject」という名前のプロジェクトを作成します。プラグインはイベントを受け取り、junit 起動構成ファイルを作成します。ファイルを確認し、エディターで開くと、上記の属性が設定されています。Eclipse デバッグ構成ダイアログを開いたところ、問題が発生しました
ダイアログを開くと起動構成が上書きされ、ダイアログでプロジェクトが選択されていないように見えます。
もう 1 つの問題は、パッケージ エクスプローラー ビューでプロジェクトを右クリックしてプロジェクトを Junit としてデバッグすると、同じ名前とサフィックス (1) を持つ別の起動構成が作成されることです。つまり、「testProject(1)」です。