假设我有ClassA,我确实可以访问源代码,但修改它的可用性有限(没有充分理由因为它在生产中有效)。
我有一个名为ClassA&#39的LibraryX。
我有一个单元测试模块,它在测试环境中调用LibraryX,而不需要对所需的各种数据库和文件进行许多必要的访问。 我想在不改变原始代码(或最少干预)的情况下存根方法
像Shadowing / overriding方法没有被继承...因为如果我继承并测试继承的类...我不再测试基类...
答案 0 :(得分:0)
您说您在更改ClassA中的代码时有限制,因为它在生产中使用。
如果您被允许,您可以做的是将CLassA中的所有方法提取到接口中,然后让ClassA实现该接口。
您可以使用该接口使用模拟框架来删除方法。
这样,除了ClassA现在实现接口之外,不应该影响生产。生产中的代码仍然可以访问所有ClassA的属性或方法。
使用此方法,您有两种方法可以访问ClassA:
这是我解决这个任务的方式。 希望这可以帮助你