2010-06-12 44 views
3

不仅仅是一个问题,本身,这是一个尝试与其他人比较笔记 。我写了一个通用的History类,它模拟浏览器历史记录的功能 。我正在试图将我的 头围绕在编写单元测试的时候有多远。我是 使用NUnit。请在下面分享您的测试方法。测试通用类

History类的完整代码是herehttp://pastebin.com/ZGKK2V84)。

回答

8

虽然这个问题有点模糊,在一般情况下,像这样一类的,我建议测试以下,至少包括:

  • 测试每个方法和属性的公共API中,验证每个加入“真实”的数据时,适当地改变了内部的集合
  • 测试增加无效数据给每个方法(应此接受空引用,例如?),确保你要么适当的例外或者你的愿望
  • 行为考虑它是一个泛型类,我会用值类型和引用类型来测试它(除非你决定在其中添加一个约束)
3

与你眼中的非泛型类相比,它作为一个泛型类的具体内容与测试有什么不同?我看不出这个问题:)

只需填写T在单元测试某种类型,比如int让你拥有History<int>一个实例,然后测试所有的类有趣的逻辑是正常的。例如。不存在历史时不能倒退,前进意味着可以向后移动等等。通常的东西:)如果你不知道该怎么做,可以获得一本书或阅读一些单元测试教程。

+2

我并不打算表达出现问题。至于你的问题:“与你眼中的一个非泛型类相比,它是一个通用类的特别之处,与测试有什么不同?”这就是我想要弄清楚的......我怀疑没有什么区别,但是想与人们比较一下笔记,看看我是否在朝着正确的方向前进。 – 2010-06-13 00:06:26

+3

我认为里德是对的。测试中泛型类和非泛型类之间的唯一区别就是您将其封装到它中。他建议引用类型和值类型。我同意。 – dviljoen 2010-06-13 02:07:42

+0

是的,这是一个公正的评论:) – 2010-06-13 02:11:05

1

编写一个镜像泛型类的泛型测试类。然后创建另一个测试类,用两个不同类型的参数实例化该测试类(值类型和某种类型的引用类型是一个好的开始)。