我想测试Eclipse插件的命令处理程序类。这就是为什么我想在这个处理程序类的构造函数中注入IWorkbenchWindow的实例,因为
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
让我对PlatformUI产生了依赖。
然而,我试着做这个
@Inject
public FindAndReplaceHandler(IWorkbenchWindow workbenchWindow) {
this.fWorkbenchWindow = workbenchWindow;
然后框架抛出NoSuchMethodException,抱怨FindAndReplaceHandler类没有无参数构造函数。
我的类FindAndReplaceHandler扩展了AbstractHandler并覆盖
void execute(ExecutionEvent event)
(所以我不使用注释@Execute和@CanExecute的现代方式)
我的Eclipse版本是:版本:Mars.2(4.5.2)。我创建了Eclipse插件项目,并将Eclipse版本设置为"3.5或更高版本"。然而,也许我需要安装e4工具并使用它们?如何安装它们?
任何我能解决这个问题的想法都将不胜感激。
@Inject风格的命令处理程序仅在编写纯e4风格的插件时使用(这些插件不使用IWorkbenchWindow
或PlatformUI
)。
如果您想使用IWorkbenchWindow
,那么您正在编写一个3.x兼容模式插件,并且不能对命令处理程序(以及大多数其他内容)使用注入。命令处理程序必须具有无参数构造函数。