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