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

Api 测试调用同一私有方法的多个公共方法,api,unit-testing,testing,solid-principles,single-responsibility-principle,Api,Unit Testing,Testing,Solid Principles,Single Responsibility Principle,我试图弄清楚这是否是一个API设计缺陷,它实际上是正常的,还是SRP被违反了 我有两个公共方法initialize()和onListRefresh()。它们都调用相同的私有方法updateList()。它们之间唯一的区别是initialize()还检查null参数以引发异常 问题是,为了测试这两个公共方法,我实际上必须复制和粘贴相同的mock、stub、expectations和断言,这些都是私有方法上发生的事情,这感觉是错误的。那是哪一个呢 公共API设计中是否存在缺陷 没关系,应该是这样的

我试图弄清楚这是否是一个API设计缺陷,它实际上是正常的,还是SRP被违反了

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

问题是,为了测试这两个公共方法,我实际上必须复制和粘贴相同的mock、stub、expectations和断言,这些都是私有方法上发生的事情,这感觉是错误的。那是哪一个呢

  • 公共API设计中是否存在缺陷
  • 没关系,应该是这样的
  • 使用
    initialize()
    检查参数和调用
    updateList()

  • 我会选择2,并坚持并行测试。但是测试代码可能会向您调用一些东西:提取助手方法。


    这可能发生在测试的排列、操作和断言阶段的任何地方。您可以在所有3个阶段提取帮助程序。诀窍是好的名字,这样测试就可以简单易读地表达它们的目的。

    为什么不
    updateList
    也测试值呢?最好有一些代码。。。不管怎样,你的方法的意图是什么?初始化,你没有价值,你将有一些价值?刷新你有一个值并且你更新了它?对我来说,你应该与意图而不是方法产生共鸣(通常意图会以某种方式被公开的方法暴露出来)