今天走到了铁人赛一半的赛点,终於要提到我们标题 NSubstitute 相关概念的介绍了XD。好,那先提单元测试的艺术是如何定义隔离框架:
隔离框架(isolation framework):是一套可用来帮助写程序的 API,使用这套 API 来建立假物件,比手刻假物件要容易得多、快得多、简洁许多。
所以隔离框架的目的就是要帮助我们撰写假物件;此外,隔离框架也是能在执行期间建立和设定假物件的类别库,而这些物件也被称为动态虚设常式物件(dynamic stub)和动态模拟物件(dynamic mock)。
我们先透过程序码来看一个例子(来源於单元测试的艺术),假设今天有一个介面长这样:
public interface IComplicatedInterface
{
void Method1(string a, string b, bool c, int x, int y)
void Method2(string b, bool c, int x, int y)
void Method3(bool c, int x, int y)
}
从这个介面可以看出有三个方法,三个方法的参数个数加起来总共十二个;因此,我们可以写出以下的假物件类别:
public class MytestableComplicatedClass : IComplicatedInterface
{
public string meth1_a;
public string meth1_b;
public bool meth1_c;
public int meth1_x;
public int meth1_y;
public string meth2_b;
public bool meth2_c;
public int meth2_x;
public int meth2_y;
public bool meth3_c;
public int meth3_x;
public int meth3_y;
public void Method1(string a, string b, bool c, int x, int y)
{
meth1_a = a;
meth1_b = b;
meth1_c = c;
meth1_x = x;
meth1_y = y;
}
public void Method2(string b, bool c, int x, int y)
{
meth2_b = b;
meth2_c = c;
meth2_x = x;
meth2_y = y;
}
public void Method3(bool c, int x, int y)
{
meth3_c = c;
meth3_x = x;
meth3_y = y;
}
}
是不是觉得很长,而且这还没牵涉撰写商业逻辑的程序码在其中,若导入隔离框架,则可以自动化处理上述的手刻流程,那明天会介绍如何在专案上安装 NSubstitute,并说明 NSubstitute 的基本介绍。
>>: 铁人赛 Day15 -- RWD响应式网页 -- 用手机、电脑、平板的拢来啦
前言 大家好,我是Lufor,第一次参加铁人赛。这是我的主要Blog网址: https://lufo...
昨天讲到了function,那今天继续在讲function其他的东西 今天讲讲括号里面的要干嘛,其实...
网站上线後,开始接触网站经营相关的资讯时,才发现经营网站没那麽简单? 网站最重要的工作就是招揽潜在客...
前情提要 身後传来了声音:「哈罗,我叫艾草,是你的入门引导学姊。」 我回头一看却没看到人。 「这里!...
权责划分 续VoK整合登入 当使用者登入系统後,无论是因为使用者权责亦或是为了系统安全,通常会建立适...