![]() |
1
1
我要去 假定 通过测试后端,您指的是实际与电子邮件服务器对话的代码位,并测试您拥有的其他软件。 mocked 这一层。 现在,这可能是集成测试,也可能不是集成测试,这取决于您的定义单元。坦率地说,我不在乎您决定称之为什么,但是如果您编写一些自动测试,这些测试可以快速运行并经常执行,那么它们也可以使用与单元测试相同的平台。 我试着写这个,这样它至少可以用以下两种方式工作——第一种是它连接到一个进程本地电子邮件服务器,您可以根据需要设置和配置。在Java中我使用 Dumpster 但我确信C++存在Aikes。 第二种方法是连接到至少一个可以编写脚本的本地电子邮件服务器。一个你可以随意乱喷(所以不是真实的或者开发者之间共享的),并针对它运行相同的测试集。原因是,SMTP服务器的开发人员讨厌所有人,您将要检查存根是否与实际工作相同。我认为这相当于 One Database Per Developer . 现在,如果您没有编写自己的smtp客户机,只需要 facade 在现有的第三方API周围,我不太可能“集成测试”这种情况,因为假设第三方API已经受到足够的攻击,以至于bug已经消失。我将研究模拟第三方API,并验证门面是否按预期工作。 1)也许你可以在CI循环期间这样做,然后在所有开发人员之间共享一组电子邮件服务器,而本地运行只使用一个C++ DunpStter。 |
![]() |
2
7
我愿意 mock 电子邮件服务器,并将模拟对象配置为视情况接受/拒绝电子邮件(取决于您的测试)。 为了有效地做到这一点,您需要一个接口来与您的电子邮件服务器进行对话。对于测试,实现是一个模拟对象。对于部署,您可以用一个直接与邮件服务器对话的实现来替代它。 看看这个 SO question 用于C++模拟框架。 |
![]() |
3
1
你只需要找到一种方法,用一个完全在你控制下的存根来替换真实的东西。通常,这是通过模拟框架完成的,比如 Rhino.Mocks . 顺便说一句:如果你使用一个“真实”的电子邮件帐户,那么它不再是一个单元测试,而是一个集成测试… |
![]() |
4
0
因为您很可能不想测试套接字的使用,所以您可能会考虑用一个不涉及任何TCP通信的虚拟服务器实现来替换代码的那部分。只需对来自客户机的预期请求进行硬编码,让虚拟服务器做出适当的响应。 |
![]() |
5
0
安德鲁模仿邮件API是正确的。你在C语言中遇到的问题可以用两种方法之一来解决。
有一本关于如何在困难情况下进行单元测试的好书:“有效地使用遗留代码”,我不能高度推荐这本书。不要被标题所耽误,本书将遗留代码视为没有单元测试的任何代码。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |