有没有办法在C#中编写单元测试,以确保在项目的任何地方都不调用方法?

Luk*_*ett 2 c# reflection unit-testing

在我们的应用程序中,我们强制存储为字符串的所有日期都应采用ISO 8601格式.因此,例如,如果我们在Lucene索引中存储日期,我想确保它始终以以下格式存储:

2014-03-12T23:03:13Z
Run Code Online (Sandbox Code Playgroud)

我们有一个扩展方法DateTime.ToISO8601DateTimeString(),可以轻松实现现有代码的单元测试,确保始终如此.

我想知道是否有可能确保DateTime.ToString()永远不会在代码中调用(除了它的重载)?

可能的路线:

  • 反射
  • SVN中的预提交挂钩
  • 覆盖DateTime.ToString()异常

有没有人用过类似的方法成功地实现了这个目标?

更新

为了澄清,我希望这是应用程序范围,如果在项目调用中的任何地方添加新代码,则会自动失败 DateTime.ToString()

Eup*_*ric 5

这可能是OT,但我真的认为你不应该这样做.

正确的方法是创建CustomDate类,而不是在应用程序中使用DateTime.如果您确保应用程序无法接受DateTime并且CustomDate使用您想要的转换,则无需进行任何类型的测试.

请注意,此代码不会触发您的测试,但会带来问题:

DateTime now = DateTime.Now;
String str = "now is :"+now;
Run Code Online (Sandbox Code Playgroud)