[java] TestNG를 사용한 얼럿 팝업 테스트

TestNG는 자바 기반의 테스팅 프레임워크로, 얼럿 팝업과 같은 다양한 테스트 시나리오를 처리할 수 있습니다. 이제 해당 프레임워크를 사용하여 얼럿 팝업을 테스트해보겠습니다.

필요한 의존성 추가

먼저, Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 TestNG를 프로젝트에 추가해야 합니다. 이를 위해 pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.3.0</version>
</dependency>

테스트 클래스 작성

TestNG는 @Test 어노테이션을 사용하여 테스트를 정의합니다. 얼럿 팝업을 다루기 위해 Selenium WebDriver를 사용할 것이므로, 먼저 Selenium WebDriver 의존성도 추가합니다.

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.141.59</version>
</dependency>

그리고 다음과 같이 테스트 클래스를 작성합니다:

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class AlertPopupTest {
    private WebDriver driver;

    @BeforeTest
    public void setUp() {
        System.setProperty("webdriver.chrome.driver", "path/to/chrome/driver");
        driver = new ChromeDriver();
    }

    @AfterTest
    public void tearDown() {
        driver.quit();
    }

    @Test
    public void testAlertPopup() throws InterruptedException {
        driver.get("https://example.com");
        driver.findElement(By.className("alert-button")).click();

        // 얼럿 팝업 핸들링
        Alert alert = driver.switchTo().alert();
        Thread.sleep(2000);
        alert.accept();
        Thread.sleep(2000);
    }
}

위의 코드에서 @BeforeTest 어노테이션은 테스트 실행 전에 WebDriver를 설정하고, @AfterTest 어노테이션은 테스트 실행 후에 WebDriver를 종료합니다. @Test 어노테이션은 실제 테스트 메소드를 정의하며, 해당 테스트에서는 driver.get()으로 사이트를 열고 얼럿 팝업을 핸들링하는 과정을 거칩니다.

얼럿 팝업 테스트 실행

이제 테스트를 실행해봅시다. IDE에서 TestNG 테스트를 실행하거나, Maven이나 Gradle을 통해 명령어로 실행할 수 있습니다.

테스트 실행 후, 얼럿 팝업이 나타났을 때 Selenium WebDriver가 제대로 핸들링하고 팝업을 닫는지 확인할 수 있습니다.

결론

TestNG와 Selenium WebDriver를 함께 사용하면, 얼럿 팝업을 포함한 다양한 테스트 시나리오를 효율적으로 처리할 수 있습니다. 이를 통해 안정적이고 복잡한 테스트를 자동화할 수 있으며, 개발자와 QA 팀은 신속하게 문제를 감지하고 해결할 수 있습니다.