作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于 Eclipse 3.x 的应用程序,它使用命令和处理程序。
我正在提高代码覆盖率,并希望尽可能多地进行测试。我已经学会了如何测试的简单案例 (POJO)。但是,有些情况下我找不到好的起点,尤其是在创建夹具时。
例如:Eclipse 命令处理程序。我有一个处理程序类 MyHandler
延伸 org.eclipse.core.commands.AbstractHandler
.它只有一个方法 public Object execute(ExecutionEvent event) throws ExecutionException
.通常,event
从 GUI 中的用户操作传入,例如,单击菜单项。
我如何进行单元测试?我需要模拟 ExecutionEvent
在模拟框架的帮助下?
最佳答案
除非不可避免,我更喜欢只模拟我拥有的类型。有关 Should you only mock types you own? 的讨论,请参见此处
自 ExecutionEvent
可以轻松创建 s,我不会 mock 它们。下面的代码段创建了一个事件,您可以将其传递给处理程序的 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" );
null
如果您的生产代码未对其进行评估。
context
的变量。 :
context.addVariable( ISources.ACTIVE_PART_NAME, myPart );
context.addVariable( ISources.ACTIVE_CURRENT_SELECTION_NAME, new StructuredSelection() );
null
不允许作为变量值。要么省略调用,要么 - 如果已经添加,使用
removeVariable()
.
关于eclipse - 如何对 Eclipse 命令处理程序进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182727/
我是一名优秀的程序员,十分优秀!