Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对电子邮件规则进行单元测试_C#_Unit Testing_Mbunit - Fatal编程技术网

C# 如何对电子邮件规则进行单元测试

C# 如何对电子邮件规则进行单元测试,c#,unit-testing,mbunit,C#,Unit Testing,Mbunit,我把一个员工的电子邮件下载到一个表中,然后把我刚下载的电子邮件收集起来,并对它们运行一系列规则 e、 g.如果电子邮件来自blah@email.com,将电子邮件发送到folder1 如何为这个过程编写单元测试? 我是否需要创建一个虚拟的电子邮件集合,然后为每个电子邮件设置一个规则? 我很难打破单元测试,我总是想在测试中加入数据库过程,我知道这是错误的。单元测试的确切形状将取决于系统的体系结构。通常,您会创建一组模拟电子邮件。使用模拟电子邮件对象。它们不必存在于数据库中。无论如何,你应该将电子邮

我把一个员工的电子邮件下载到一个表中,然后把我刚下载的电子邮件收集起来,并对它们运行一系列规则

e、 g.如果电子邮件来自blah@email.com,将电子邮件发送到folder1

如何为这个过程编写单元测试?
我是否需要创建一个虚拟的电子邮件集合,然后为每个电子邮件设置一个规则?
我很难打破单元测试,我总是想在测试中加入数据库过程,我知道这是错误的。

单元测试的确切形状将取决于系统的体系结构。通常,您会创建一组模拟电子邮件。使用模拟电子邮件对象。它们不必存在于数据库中。无论如何,你应该将电子邮件表示为类


编写单元测试以对模拟电子邮件进行操作,并断言规则的行为符合您的预期。

单元测试的确切形状将取决于系统的体系结构。通常,您会创建一组模拟电子邮件。使用模拟电子邮件对象。它们不必存在于数据库中。无论如何,你应该将电子邮件表示为类


编写单元测试来处理模拟的电子邮件,并断言规则的行为符合您的预期。

如何测试软件很大程度上取决于您如何将其分解为不同的组件。实际上没有对“过程”的测试。您应该将重点放在单个组件上。例如,使用您描述的流程,软件可以分解为不同的组件,如下所示:

  • 电子邮件下载程序
  • 电子邮件解析器
  • 规则引擎
  • 电子邮件路由器

基本上,您将单独测试每个组件,运行测试,测试每个组件的各个方面(尽可能多)。如何测试软件很大程度上取决于您如何将其分解为不同的组件。实际上没有对“过程”的测试。您应该将重点放在单个组件上。例如,使用您描述的流程,软件可以分解为不同的组件,如下所示:

  • 电子邮件下载程序
  • 电子邮件解析器
  • 规则引擎
  • 电子邮件路由器

基本上,您将单独测试每个组件,运行测试,测试每个组件的各个方面(尽可能多)。

我在这里是一个纯粹主义者,但是单元测试应该测试最小的代码单元。这通常是一个类方法。因此,您应该查看您的类拥有的每个公共方法,并编写只测试该方法中的逻辑的测试。这可能意味着模仿其他交互类,或者重构代码以减少依赖性。通常,您会发现您有一个具有多个职责的类,应该将其分解为多个类,这样就可以为其编写单元测试。这就是为什么单元测试是评估活动而不是测试活动。这将提高您的设计质量


您还可以查看以客户为中心的测试,以测试它们是否能够协同工作。

我在这里是一个纯粹主义者,但是单元测试应该测试最小的代码单元。这通常是一个类方法。因此,您应该查看您的类拥有的每个公共方法,并编写只测试该方法中的逻辑的测试。这可能意味着模仿其他交互类,或者重构代码以减少依赖性。通常,您会发现您有一个具有多个职责的类,应该将其分解为多个类,这样就可以为其编写单元测试。这就是为什么单元测试是评估活动而不是测试活动。这将提高您的设计质量

您还可以查看以客户为中心的测试,以测试所有这些测试是否协同工作