Java 如何在Eclipse插件中编程设置TextEditor的字符串输入?

Java 如何在Eclipse插件中编程设置TextEditor的字符串输入?,java,eclipse,eclipse-plugin,eclipse-rcp,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,我想要的:我想要为我的Eclipse编辑器插件编写JUnit测试。为此,我想设置我的TextEditor扩展名的一个实例。然后我想从一个字符串设置这个TextEditor的输入,这样字符串的内容就是编辑器实例的输入。然后我想运行一些测试并断言编辑器标记错误等等 我失败的地方:我不知道如何从字符串设置编辑器的输入。编辑器必须执行的唯一功能是setInput(ieditorinputinput),但我不知道如何创建一个内容为字符串的ÌEditorInput 是否有可能这样做,如果没有,是否有其他方法

我想要的:我想要为我的Eclipse编辑器插件编写JUnit测试。为此,我想设置我的
TextEditor
扩展名的一个实例。然后我想从一个字符串设置这个
TextEditor
的输入,这样字符串的内容就是编辑器实例的输入。然后我想运行一些测试并断言编辑器标记错误等等

我失败的地方:我不知道如何从字符串设置编辑器的输入。编辑器必须执行的唯一功能是
setInput(ieditorinputinput)
,但我不知道如何创建一个内容为字符串的
ÌEditorInput

是否有可能这样做,如果没有,是否有其他方法将编辑器的输入设置为给定字符串?

您可以根据建议创建(工作区)文件,或者实现专门的
IEditorInput
并使用此输入打开文本编辑器

例如:

//为简洁起见省略了无趣的方法
类StringEditorInput实现了IStorageEditorInput{
@凌驾
公共布尔存在(){
返回true;
}
@凌驾
公共IStorage getStorage()引发CoreException{
返回新的StringStorage();
}
}
类StringStorage实现了IStorage{
@凌驾
公共InputStream getContents()引发CoreException{
返回新的ByteArrayInputStream(“Hello editor!”.getBytes(StandardCharsets.UTF_8));
}
}
String editorId=“org.eclipse.ui.DefaultTextEditor”;
IWorkbenchPage=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor=IDE.openEditor(第页,new StringEditorInput(),editorId);

相当多的编辑器工作依赖于编辑器输入的确切细节。例如,大多数编辑器都喜欢使用
iFileEdit或Input
,而不仅仅是
iEdit或Input
。因此,要真正正确地测试编辑器,您需要为其提供一个工作区文件。如何使用给定字符串作为输入创建工作区文件?您可以使用
IFile
create
方法。