Levélküldés tesztelése Dumbsterrel

Posted by | · · · · | Szoftverfejlesztés | Nincs hozzászólás a(z) Levélküldés tesztelése Dumbsterrel bejegyzéshez

Rengeteg projektben kell email-t küldeni, viszont ennek tesztelése nem egyszerű feladat. Levelezéshez általában telepítünk valamilyen helyi levelező szervert vagy valami ingyenes szolgáltatást használunk a netről. Két megoldást alkalmaztunk eddig tesztelésre: az alkalmazást használva eljutottunk oda, hogy levelet küldjön a rendszer, illetve tesztkóddal küldtünk magunknak levelet. Most eggyel továbbléptünk.

email-marketing-testing

Dumbster

Mi lenne ha lehetne egységtesztelni a levélküldést (mondjuk ez inkább integrációs tesztnek minősülne) szerverestül mindenestül?
Erre kínál megoldást a Dumbster nevű kamu SMTP szerver amit direkt erre a célra fejlesztettek.
Ezt forkolta egy Jason Kitchen nevű emberke, aki rengeteg jóságot belefejlesztett még.
Érdemes ez utóbbit használni. A hozzáadott ficsőrlistát megtalálja mindenki a readme-ben.

Hogy is néz ki ez a gyakorlatban

Ha mavent használunk, akkor csak hozzá kell adni a projektünk pom-jába függőségként.

        <dependency>
            <groupId>org.github.rjo1970</groupId>
            <artifactId>dumbster</artifactId>
            <version>1.9.0.1</version>
            <scope>test</scope>
        </dependency>

Ha szeretjük magunkat megfosztani a maven kényelmétől, akkor pedig a lefordított jar-t adjuk hozzá a projektünkhöz.
Maga a tesztkód annyiból áll hogy elindítunk egy szervert adott porton, majd elküldjük rá a levelet, utána pedig leellenőrizzük mi jött meg belőle.
Egy példa teszt:

//Szerver indítása
SmtpServer server = SmtpServerFactory.startServer(4444);
//Saját kód levélküldésre
sendMessage(SUBJECT);
//Szerver leállítása
server.stop();
//annak ellenőrzése, hogy kapott-e levelet a szerver
assertEquals(1,server.getEmailCount());
//mail lekérése
MailMessage mailMessage = server.getMessage(0);
//tartalom ellenőrzése
assertEquals(SUBJECT, mailMessage.getHeaderValues("Subject")[0]);
...

Mail tesztelés fejlesztői gépen

Ez eddig szép és jó, de vannak olyan helyzetek, amikor saját szemünkkel kell megtekintenünk a levél tartalmát. Például, ha szépészetileg szeretnénk beavatkozni. Ezen esetekre nem jó automatizált tesztet írni. A fejlesztett verzió lehetőséget ad hogy telnettel elérjük a szervert, én azonban tovább mentem kicsit és belefejlesztettem egy fájlos tárolási módot. A port után megadva egy könyvtárat, minden érkező levelet lement eml fájlba. Ez a Microsoft által használt kiterjesztés, lényegében plain ASCII. Így néz ki a parancssoros indítás:


java -jar dumbster.jar 4444 /home/user/testmails/

Ezután kedvenc email kliensünkel meg tudjuk nyitni és ellenőrizhetjük, hogy minden stimmel-e. Így nem kell folyamatosan törölni a teszt leveleket vagy beállítani egy külön mail szervert localba.

Jó levél tesztelést! 😀


No Comments

Leave a comment