我正在开发一个解释器,并希望对解释模型的“执行”方法进行内部测试。execute 方法没有输入或输出,因此测试该方法的唯一方法(至少据我所知)是模拟内部方法调用以查看它们是否以正确的顺序执行。
目前我有以下课程:
ExecutableInstance
- 可以执行的模型类。ExecutableInstanceFactory
- 创建可执行实例的单例类(实现为枚举),根据给定的参数使用不同的方法。ModelAnalyzer
- 包含分析模型的方法的单例类
解释器调用类的execute()
方法ExecutableInstance
,然后调用ModelAnalyzer
来理解模型中的内部可执行实例。ExecutableInstance
然后它使用 the创建新的ExecutableInstanceFactory
,然后execute()
根据模型的定义方式调用它们的方法。
我的想法是模拟ExecutableInstanceFactory
该类,以便它返回 mock ExecutableInstace
s,然后我可以测试执行顺序。但这意味着我必须ExecutableInstanceFactory
将ExecutableInstance
. 由于它是单例,因此将其作为参数传递将是愚蠢和愚蠢的。我曾想过使用 Google 的 Guice 进行 DI ......但我一直在尝试这样做。
我的方向正确吗?如果是这样,应该如何实施?