我正在开发一个Windows Phone 7应用程序。它有另一个单元测试项目。现在在主应用程序中,我有一个方法执行一些代码来导航到另一个页面。在单元测试时,我不希望该方法执行,只是在第一行返回。现在,我正在做的是在单元测试时定义一个符号。
#define EnableUnitTest
public static void Navigate(string page)
{
#if EnableUnitTest
return;
#endif
.....
.....
}
有没有更好的方法呢。
答案 0 :(得分:2)
很抱歉,但这似乎是一个非常糟糕的设计。在单元测试中,您正在测试一些不应该以这种方式调节的代码。单元测试应包含三个步骤:安排,操作,断言准备输入,调用实际方法并断言结果。在安排步骤中,您应该准备测试方法。
另外我注意到这个方法是静态的。静态方法很难进行单元测试。最好将此类的逻辑抽象为一个接口或抽象基类,它可以在单元测试中轻松模拟/存根,以削弱代码不同部分之间的耦合。