仅在从单元测试调用时执行一些代码

时间:2010-11-03 09:39:03

标签: unit-testing macros windows-phone-7

我正在开发一个Windows Phone 7应用程序。它有另一个单元测试项目。现在在主应用程序中,我有一个方法执行一些代码来导航到另一个页面。在单元测试时,我不希望该方法执行,只是在第一行返回。现在,我正在做的是在单元测试时定义一个符号。

#define EnableUnitTest


public static void Navigate(string page)
{

 #if EnableUnitTest
     return;
 #endif
  .....
  .....       

}

有没有更好的方法呢。

1 个答案:

答案 0 :(得分:2)

很抱歉,但这似乎是一个非常糟糕的设计。在单元测试中,您正在测试一些不应该以这种方式调节的代码。单元测试应包含三个步骤:安排,操作,断言准备输入,调用实际方法并断言结果。在安排步骤中,您应该准备测试方法。

另外我注意到这个方法是静态的。静态方法很难进行单元测试。最好将此类的逻辑抽象为一个接口或抽象基类,它可以在单元测试中轻松模拟/存根,以削弱代码不同部分之间的耦合。