如何测试字段是否为字符串

And*_*dyM 0 c# tdd

这是我回到TDD的基础知识用于学习目的.

我最初实现Person.Surname为类型对象的字段(传递测试的最简单方法).

然后我添加了一个测试设置,Person.Surname指出返回值应该是一个字符串并设置Person.Surname=20.

我通过改变使用string而不是使用实现来"修复"测试object.由于静态类型检查,测试现在很长时间编译,所以我评论了它.

Person.Surname字段当前实现为字符串.如果我将字段的实现更改为对象,则我的测试都不会失败.

所以我无法在测试中留下我的意图.在这种情况下,有没有办法进行失败的测试?


更新:我同意Esko,实际上这不是你想要做的事情.从学习的角度来看,我试图提出的观点是,如果我(或其他人在以后的某个时间点)扩大我的字段的类型范围(比如从字符串到对象)我将不会直接单元测试失败.也许这毕竟不是一件坏事?

Esk*_*ola 5

编写关于具有某种类型的字段的测试,抽象级别太低.编写描述功能的测试.然后测试将更好地描述代码编写的原因,并且您将能够更自由地重构实现而不会破坏/使现有测试无效.

在重构生产代码时,它会不时地影响测试代码,您需要更新测试以使它们编译和传递(测试代码需要重构与所有其他代码相同).当发生这种情况时,测试名称告诉测试背后的意图是什么有用 - 测试指定了哪些特性/行为.然后,您可以更新测试代码,以便保持相同的意图.或者,如果编写测试的原因不再有效,则可以删除测试.