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