如何对Eclipse命令处理程序进行单元测试?

标清

我有一个使用命令和处理程序的基于Eclipse 3.x的应用程序。

我正在提高代码覆盖率,并希望尽可能多地进行测试。我已经学会了如何测试简单案例(POJO)。但是,在某些情况下,我找不到很好的起点,尤其是在创建灯具时。

例如:Eclipse命令处理程序。我有一个处理程序类MyHandler扩展org.eclipse.core.commands.AbstractHandler它只有一个方法public Object execute(ExecutionEvent event) throws ExecutionException通常,它event是通过GUI中的用户操作(例如,单击菜单项)传递的。

如何进行单元测试?我需要嘲笑ExecutionEvent带着嘲弄的框架的帮助?

鲁迪格·赫尔曼

除非不可避免,否则我只喜欢模拟自己拥有的类型。请参阅此处的讨论,您是否应该只拥有自己的模拟类型?

由于ExecutionEvent可以轻松创建s,因此我不会嘲笑它们。下面的代码段创建了一个事件,您可以将其传递给处理程序的execute方法。

IEvaluationContext context = new EvaluationContext( null, new Object() );
Map<String, String> parameters = new HashMap<>();
ExecutionEvent event = new ExecutionEvent( null, parameters, null, context );

ExecutionEvent构造函数的第一个参数引用该命令-我从未使用过它。如果您的代码需要实际的命令,则可以使用ICommandService获取对命令的引用:

ICommandService commandService = ...
Command command = commandService.getCommand( "id.of.my.command" );

第二个参数是命令参数的映射。第三个参数是触发器如果是Eclipse工作台,则为SWT事件(如果可用)。null如果您的生产代码不对其进行评估,则将其保留

在调用execute之前,您可能需要准备以下变量context

context.addVariable( ISources.ACTIVE_PART_NAME, myPart );
context.addVariable( ISources.ACTIVE_CURRENT_SELECTION_NAME, new StructuredSelection() );

请注意,null不允许将其作为变量值。忽略呼叫,或者-如果已添加,请使用removeVariable()

如果您不需要命令(请参见上文),并且您的生产代码当然不需要工作台,则您甚至可以将测试作为纯JUnit测试(而不是PDE JUnit测试)运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在C#中以CQRS模式对命令处理程序进行单元测试

如何对委托处理程序进行单元测试

如何对Eclipse插件进行单元测试?

重置golang中的http处理程序以进行单元测试

如何对Google App Engine Go HTTP处理程序进行单元测试?

如何使用Power Mock对Spring Boot Rest Controller和异常处理程序进行单元测试

如何在vert.x Java中对处理程序进行单元测试?

Python:如何对自定义HTTP请求处理程序进行单元测试?

PHPUnit Laravel:如何对自定义异常处理程序进行单元测试?

我如何对这个处理 observables 的函数进行单元测试

如何对 Go Gin 处理函数进行单元测试?

如何模拟配置阶段提供程序进行单元测试?

如何对与块设备交互的程序进行单元测试

AngularJS:如何对提供程序进行单元测试

Golang单元测试HTTP处理程序

单元测试golang处理程序

单元测试通用处理程序

单元测试事件处理程序的代码

如何使用Jest和Enzyme对包含history.push的react事件处理程序进行单元测试?

角度单元测试:如何对.map()进行单元测试?

Netty-使用IdleStateHandler对处理程序的空闲状态进行单元测试

JavaScript事件处理程序是否应该进行单元测试

如何对BSD插槽进行单元测试

如何对PHP特性进行单元测试

如何对异常进行单元测试?

如何对Reduxsauce进行单元测试?

如何对JSON解析进行单元测试

如何对GC进行单元测试?

如何对canActivate of Angular进行单元测试?