代码之家  ›  专栏  ›  技术社区  ›  Simon Munro

如何平衡框架/API设计和TDD

  •  3
  • Simon Munro  · 技术社区  · 16 年前

    我们正在构建一个将被其他开发人员使用的框架,目前我们已经使用了很多TDD实践。我们到处都有接口,并且有编写良好的单元测试来模拟接口。

    但是,我们现在已经到了输入类的一些属性/方法需要是内部的,并且对框架用户不可见(例如对象ID)。问题是,我们不能将这些字段/方法放在接口上,因为接口不描述可访问性。

    我们可以:

    1. 在方法的第一行中仍然使用接口和upcast,但这似乎破坏了接口的用途。
    2. 使用类作为输入参数-打破 一切 应该是接口
    3. 提供另一个层,在公共接口和内部接口之间进行一些转换

    是否存在处理这一问题的现有模式/方法?TDD的人说应该怎么做?

    3 回复  |  直到 16 年前
        1
  •  2
  •   Ricardo Villamil    16 年前

    您需要能够在模型对象中复制这些内部方法。以真实物体调用它们的方式调用它们。然后将单元测试集中在依赖于需要测试的私有方法的公共方法上。如果这些内部方法正在调用其他对象或进行大量工作,则可能需要重构设计。

    祝你好运。

        2
  •  4
  •   Ilja Preuß    16 年前

    首先,没有通用的TDD规则规定所有内容都应该是一个接口。这是来自一个特定的风格,不是每个TDDER都练习。见 http://martinfowler.com/articles/mocksArentStubs.html

    第二,你正经历着 public vs. published . 我们的团队通过引入API文档中显示的@published注释“解决”了这个问题。据我所知,Eclipse使用命名约定。我真的不知道 好的 不幸的是,问题的解决方案。

        3
  •  0
  •   dove    16 年前

    听起来你想让你的班级 dependency injection . 搜索stackoverflow。然后,您可以通过在构造函数中或通过setter选择来设置这个ID。

    [1L