我将一个员工的电子邮件下载到一个表格中,然后我收集我刚刚下载的电子邮件并对它们运行一系列规则。
例如,如果来自 blah@email.com 的电子邮件,则将电子邮件路由到文件夹 1。
我如何为这个过程编写单元测试?
我是否必须创建一个虚拟的电子邮件集合,然后为每个电子邮件设置一个规则?我很难打破单元测试,我总是想在我知道是错误的测试中包含数据库过程。
我将一个员工的电子邮件下载到一个表格中,然后我收集我刚刚下载的电子邮件并对它们运行一系列规则。
例如,如果来自 blah@email.com 的电子邮件,则将电子邮件路由到文件夹 1。
我如何为这个过程编写单元测试?
我是否必须创建一个虚拟的电子邮件集合,然后为每个电子邮件设置一个规则?我很难打破单元测试,我总是想在我知道是错误的测试中包含数据库过程。
如何测试一个软件很大程度上取决于你如何将它分解成不同的组件。真的没有对“过程”的测试。您应该专注于单个组件。例如,使用您描述的过程,软件可以分解为不同的组件,如下所示:
您基本上将单独测试每个组件,运行测试每个组件的各个方面(尽可能多地)。
单元测试的确切形式将取决于系统的体系结构。通常,您会创建一组模拟电子邮件。使用模拟的电子邮件对象。它们不必实际存在于数据库中。无论如何,您应该将电子邮件表示为类。
编写单元测试以对模拟的电子邮件采取行动,并断言该规则的行为方式符合您的预期。
我在这里是一个纯粹主义者,但是单元测试应该测试最小的代码单元。这通常是一个类方法。因此,您应该查看您的一个或多个类具有的每个公共方法,并编写仅测试该方法中的逻辑的测试。这可能意味着模拟其他交互的类,或重构代码以减少依赖关系。通常,您会发现您有一个具有多种职责的类,应该将其分解为多个类,这样就可以为其编写单元测试。这就是单元测试如何成为评估活动而不是测试活动的原因。它应该提高你的设计质量。
您还可以查看以客户为中心的测试,以测试它们是否可以协同工作。