Ich gehe zu annehmen Wenn Sie das Backend testen, beziehen Sie sich auf den Teil des Codes, der tatsächlich mit dem E-Mail-Server kommuniziert, und um den Rest Ihrer Software zu testen, müssen Sie verhöhnt diese Ebene.
Je nach Ihrer Definitionseinheit kann es sich dabei um Integrationstests handeln oder auch nicht. Ehrlich gesagt ist es mir egal, wie Sie es nennen, aber wenn Sie einige automatisierte Tests schreiben, die schnell laufen und oft ausgeführt werden, dann könnten sie genauso gut dieselbe Plattform wie Ihre Unit-Tests verwenden.
Ich würde versuchen, dies zu schreiben, so dass es in mindestens die folgenden zwei Möglichkeiten funktionieren kann - Die erste wäre, dass es eine Verbindung zu einem prozesslokalen E-Mail-Server, die Sie einrichten und konfigurieren können, wie Sie benötigen. In Java verwende ich Müllcontainer aber ich bin sicher, dass es für C++ ähnliche Produkte gibt. Die zweite Möglichkeit wäre, sich mit mindestens einem lokalen E-Mail-Server zu verbinden, den Sie mit einem Skript versehen können. Einen, den man nach Belieben bespritzen kann (also NICHT real oder von Entwicklern gemeinsam genutzt¹) und gegen den man dieselbe Reihe von Tests laufen lässt. Der Grund dafür ist, dass die Entwickler von SMTP-Servern jeden hassen und Sie überprüfen wollen, ob Ihr Stub genauso funktioniert wie ein echter Server. Dies sehe ich als das Äquivalent zu Eine Datenbank pro Entwickler .
Wenn Sie keinen eigenen SMTP-Client geschrieben haben und nur eine Fassade um eine bestehende API eines Drittanbieters würde ich weniger wahrscheinlich einen "Integrationstest" durchführen, da ich davon ausgehe, dass die API des Drittanbieters bereits so stark in Mitleidenschaft gezogen wurde, dass die Bugs bereits herausgefallen sind. Ich würde versuchen, die API des Drittanbieters zu simulieren und zu überprüfen, ob die Fassade wie erwartet funktioniert.
1) Vielleicht könnte man dies nur während des CI-Zyklus tun, so dass alle Entwickler einen Satz von E-Mail-Servern gemeinsam nutzen und der lokale Lauf nur einen C++ Dumpster verwendet.