[java] Java Cucumber에서 테스트 실패 이메일 알림 설정하기

Cucumber는 자바 기반의 BDD(Behavior-Driven Development) 프레임워크로 유닛 테스트를 작성하고 실행하는 도구입니다. Cucumber를 사용하면 테스트 실패 시 이메일 알림 등을 설정하여 각 테스트 상태를 실시간으로 감지할 수 있습니다. 이번 글에서는 Java Cucumber에서 테스트 실패 이메일 알림을 설정하는 방법에 대해 알아보겠습니다.

1. Maven 또는 Gradle에 의존성 추가하기

먼저, 프로젝트의 pom.xml(Maven) 또는 build.gradle(Gradle) 파일에 다음 의존성을 추가해야 합니다.

// Maven
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>6.10.4</version>
    <scope>test</scope>
</dependency>

// Gradle
testImplementation 'io.cucumber:cucumber-java:6.10.4'

2. 이메일 알림 설정하기

테스트 실패 시 이메일 알림을 보내기 위해 JavaMail API를 사용할 수 있습니다. 다음은 JavaMail API의 Maven 의존성을 추가하는 방법입니다.

// Maven
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

// Gradle
implementation 'com.sun.mail:javax.mail:1.6.2'

3. 이메일 알림을 위한 유틸리티 클래스 만들기

다음은 테스트 실패 이메일 알림을 위한 유틸리티 클래스의 예시입니다. 이 클래스는 테스트 결과를 받아 이메일로 전송하는 기능을 제공합니다.

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;

public class EmailNotificationUtil {

    public static void sendEmail(String recipient, String subject, String body) throws MessagingException {
        // 이메일 설정
        Properties properties = new Properties();
        properties.put("mail.smtp.host", "smtp.example.com");
        properties.put("mail.smtp.port", "587");
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");

        // 계정 정보 설정
        final String username = "your-email@example.com";
        final String password = "your-password";

        // 세션 생성
        Session session = Session.getInstance(properties, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        // 이메일 메시지 작성
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(username));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
        message.setSubject(subject);
        message.setText(body);

        // 이메일 보내기
        Transport.send(message);
    }
}

4. 테스트 실패 시 이메일 알림 사용하기

마지막으로, 테스트 코드에서 테스트 실패 시 이메일 알림을 사용할 수 있습니다. 다음은 예시 테스트 클래스입니다.

import io.cucumber.java.en.*;
import org.junit.Assert;

public class MyStepDefinitions {

    @Given("I have {int} cucumbers")
    public void i_have_cucumbers(int number) {
        // 테스트 코드 작성
    }

    @When("I eat {int} cucumbers")
    public void i_eat_cucumbers(int number) {
        // 테스트 코드 작성
    }

    @Then("I should have {int} cucumbers")
    public void i_should_have_cucumbers(int number) {
        // 테스트 코드 작성
        Assert.fail("Expected: " + number + " cucumbers; Actual: 0 cucumbers");
        try {
            EmailNotificationUtil.sendEmail("recipient@example.com", "테스트 실패", "테스트가 실패했습니다.");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

위 예시에서는 i_should_have_cucumbers 메서드에서 테스트 실패 시 Assert.fail을 호출한 후 EmailNotificationUtil.sendEmail로 이메일을 전송하도록 설정하였습니다.

이제 Java Cucumber에서 테스트 실패 이메일 알림을 설정하는 방법에 대해 알게 되었습니다. 테스트 코드를 작성하는 동시에 실시간으로 테스트 결과를 확인할 수 있어 개발과 품질 관리에 많은 도움이 될 것입니다.

참고 자료