3

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

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

我们可以:

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

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

4

3 回答 3

4

首先,没有通用的 TDD 规则说一切都应该是一个接口。这来自并非每个 TDDer 都实践的特定风格。见http://martinfowler.com/articles/mocksArentStubs.html

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

于 2008-11-01T21:14:57.513 回答
2

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

祝你好运。

于 2008-10-29T20:44:20.733 回答
0

听起来你希望你的类有一个依赖注入。也搜索stackoverflow。然后,您可以通过在构造函数中或通过 setter 选择来设置此 Id。

[1升

于 2008-10-29T09:18:32.443 回答