Java 关于模拟框架
我正在使用Java 关于模拟框架,java,unit-testing,mocking,powermockito,Java,Unit Testing,Mocking,Powermockito,我正在使用powermock,对此我有几个问题 我们是否需要修改我们的代码,以防(在后期)发现它不能用powermock或mockito或任何其他测试框架进行测试? i、 e.我们应该停止编写静态/私有方法吗?一些框架无法测试它(我知道powermock有能力测试此类方法) 模拟/监视对象时,是否应调用实际方法?i、 我通过在方法调用中保留一个调试点来检查它,执行是否应该转到调试点 请帮助我理解这些事情 1.)不稳定/可测试性差的代码通常是设计差的标志,因此您应该更改代码。大量静态的方法/状态是
powermock
,对此我有几个问题
powermock
或mockito
或任何其他测试框架进行测试?
i、 e.我们应该停止编写静态/私有方法吗?一些框架无法测试它(我知道powermock
有能力测试此类方法)2.)模拟时,不应调用目标方法/对象。虽然间谍应该调用被间谍的方法/对象我被带进了一个拥有巨大遗留系统的团队,但他们正在为其添加新的类/方法。这些类和方法将达到10 DAO/DAL。然而,这些DAO/DAL已经启动并运行了20多年,很少出现故障。所以他们的行为几乎是意料之中的。在本例中使用mock效果非常好,我可以为新代码编写纯粹的单元测试,并模拟所有DAO以返回对象/或异常来检查边界场景 当您必须访问数据库、在internet上建立连接或拥有一个特别大的类时,mock非常适合,您不想实例化该类,只从中调用一个方法。如果您有一个类,它的构造函数中需要许多对象(每个对象都需要实例化),但实际上您只需要获取class.CanRetry()(返回true或false),那么在这个实例中,mock可以很好地工作 锤子是一个很好的工具,但它不会帮你疏通厕所。。。至少很好。mock是知道如何使用的一个很好的工具,但是它有一定的时间和地点 有关如何/何时使用mock的更多信息,请参阅以下两篇文章: (阅读时间稍长,但信息丰富) 关于你的第二个问题,下一篇文章将让你最好地理解所有不同类型的“双重测试”之间的区别,包括模拟对象、测试间谍、虚拟对象等。。。