我正在开发一个解释器,想要对解释模型的“执行”方法进行内部测试。执行方法没有输入或输出,因此测试该方法的唯一方法(至少据我所知)是模拟内部方法调用以查看它们是否按正确的顺序执行。
目前我有以下类(class):
ExecutableInstance
- 可以执行的模型类。ExecutableInstanceFactory
- 创建可执行实例的单例类(作为枚举实现),根据给定的参数使用不同的方法。ModelAnalyzer
- 包含分析模型的方法的单例类
解释器调用 ExecutableInstance
类的 execute()
方法,然后调用 ModelAnalyzer
来了解模型。然后,它使用 ExecutableInstanceFactory
创建新的 ExecutableInstance
,然后根据模型的定义方式调用其 execute()
方法。
我的想法是模拟 ExecutableInstanceFactory
类,以便它返回模拟 ExecutableInstace
,然后我可以测试执行顺序。但这意味着我必须将 ExecutableInstanceFactory 注入(inject)到 ExecutableInstance 中。由于它是单例,因此将其作为参数传递将是愚蠢和愚蠢的。我想过使用 Google 的 Guice 进行 DI...但我一直在尝试这样做。
我的方向正确吗?如果是这样,应该如何实现?
最佳答案
我将从这个执行方法中创建一些较小的方法。例如 - 一种解析方法将某些内容返回到执行方法,然后另一种方法对返回的数据执行某些操作并返回其他数据等。然后您不必测试 Execute 方法,只需测试较小的方法。这也将使您能够更轻松地检测错误。
关于java - 设计和测试此类的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19287943/