2

我正在开发一个解释器,并希望对解释模型的“执行”方法进行内部测试。execute 方法没有输入或输出,因此测试该方法的唯一方法(至少据我所知)是模拟内部方法调用以查看它们是否以正确的顺序执行。

目前我有以下课程:

  1. ExecutableInstance- 可以执行的模型类。
  2. ExecutableInstanceFactory- 创建可执行实例的单例类(实现为枚举),根据给定的参数使用不同的方法。
  3. ModelAnalyzer- 包含分析模型的方法的单例类

解释器调用类的execute()方法ExecutableInstance,然后调用ModelAnalyzer来理解模型中的内部可执行实例。ExecutableInstance然后它使用 the创建新的ExecutableInstanceFactory,然后execute()根据模型的定义方式调用它们的方法。

我的想法是模拟ExecutableInstanceFactory该类,以便它返回 mock ExecutableInstaces,然后我可以测试执行顺序。但这意味着我必须ExecutableInstanceFactoryExecutableInstance. 由于它是单例,因此将其作为参数传递将是愚蠢和愚蠢的。我曾想过使用 Google 的 Guice 进行 DI ......但我一直在尝试这样做。

我的方向正确吗?如果是这样,应该如何实施?

4

2 回答 2

1

我会用这个执行方法制作一些更小的方法。例如 - 一种解析方法将某些内容返回给执行方法,然后另一种方法对返回的数据执行某些操作并返回其他数据等。然后您不必测试 Execute 方法,只需测试较小的方法。这也将使您更容易检测错误。

于 2013-10-10T05:48:16.237 回答
1

执行方法没有输入或输出

所以应该在班级的合作者身上验证行为(使用模拟)。

由于它是单例,因此将其作为参数传递将是愚蠢和愚蠢的。

您在测试中遇到问题的事实表明您的设计存在缺陷。摆脱单例并注入协作者。

于 2013-10-10T10:11:38.820 回答