写单元测试静态方法

时间:2014-04-09 10:05:56

标签: asp.net unit-testing webforms moq static-methods

在我的项目中有很多静态方法,所有这些都是在数据库中。我本来应该为项目编写单元测试,但经常会因为所有方法都是静态的而且它们正在击中DB。有没有办法克服这个问题。很抱歉问题是抽象的,但我关心的是为静态方法编写单元测试的方法是什么,以及那些命中DB的方法。当方法是静态的时,MOQ没用,在我的项目中,一个方法在同一个类中调用其他方法。所以在这种情况下我不能MOQ内部方法,因为两者都在同一个类中。

1 个答案:

答案 0 :(得分:4)

我目前所处的项目比你所描述的要糟糕得多。它是一个不可测试系统的蓝图。我认为有几种选择,但这完全取决于你的情况。

写入集成测试,它可以访问数据库,并一起测试多个组件。我知道这不太理想,但至少对你的工作有信心。然后尝试一次只进行一小步重构代码(确保采取小步骤)并围绕该代码编写单元测试。确保您的集成测试继续通过。如果语义发生了变化,你仍然可以重构你的代际类型测试。

这可能并不像我说的那么容易,而且需要时间。这就是为什么我说这取决于你的情况。

另一种选择是(我知道很多人用传统代码执行此操作)使用其中一个昂贵的隔离框架,例如Isolator,MS Fakes可能会伪造那些不可测试的依赖项。一旦编写了这些测试,您就可以重新考虑代码,使其更易于测试。