测试调用相同私有方法的多个公共方法

时间:2016-01-28 19:03:27

标签: api unit-testing testing solid-principles single-responsibility-principle

我正在试图弄清楚它是否是一个API设计缺陷,它实际上是正常的,或者SRP是否被侵犯。

我有2种公开方法initialize()onListRefresh()。它们都调用相同的私有方法updateList()。两者之间的唯一区别是initialize()也检查了一个null参数以引发异常。

问题在于,为了测试两种公共方法,我几乎必须复制并粘贴相同的模拟,存根,期望和断言,这些都是针对私有方法发生的事情,并且感觉不对。那是哪一个:

  1. 公共API设计是否存在缺陷?
  2. 没关系,这就是应该如何。
  3. 使用initialize()同时检查参数并调用updateList()
  4. ,违反了SRP

1 个答案:

答案 0 :(得分:1)

我选择2,坚持并行测试。但是这里可能会从测试代码中调用一些东西:提取辅助方法。

这可能发生在测试的Arrange,Act,Assert阶段的任何地方。您可以在所有3个阶段中提取助手。诀窍是好名字,所以测试简单明了地表达了它们的用途。