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

本文关键字:API TDD 框架 何平衡 平衡 | 更新日期: 2023-09-27 17:47:25

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

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

我们可以:

  1. 仍然在方法的第一行使用接口和upcast,但这似乎违背了接口的目的
  2. 使用类作为输入参数-打破了TDD规则,即所有都应该是接口
  3. 提供另一层,在公共接口和内部接口之间进行一些转换

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

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

首先,没有一条通用的TDD规则规定所有东西都应该是一个接口。这来自一种特定的风格,并不是每个TDDer都能实践的。看见http://martinfowler.com/articles/mocksArentStubs.html

其次,你正在经历公开与公开的二分法。我们的团队通过引入API文档中显示的@Published注释"解决"了这个问题。据我所知,Eclipse使用命名约定。不幸的是,我不知道有什么真正好的解决方案。

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

祝你好运。

听起来您希望类具有依赖项注入。也搜索stackoverflow。然后,您可以通过在构造函数内或通过setter进行选择来设置此Id。

[1l