Selenium을 이용하여 스프링(Spring) Test하기

Web Page를 작성하였지만 실제로 하나하나 테스트를 하기엔 많은 시간과 노력이 필요하다. Testing을 쉽게 도와주는 프레임워크인 Selenium을 통해 여러가지 기능 테스트를 작성하여 쉽고 빠르게 기능테스트를 할 수 있다. 이번 포스트에서는 Selenium설치과정과 SpringBoot에 적용하는 방법을 설명하겠다.

No Image

Selenium(셀레늄)이란?

  • Selenium은 웹 어플리케이션을 위한 테스팅 프레임워크로 자동화 테스트를 위한 여러가지 강력한 기능을 지원해준다.
  • C#, Groovy, Java, Perl, PHP, Python, Ruby and Scala등 다양한 언어를 지원한다.

Selenium 설치하기

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.3.1</version>
</dependency>
  • Gradle : Version 3.3.1
// https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.3.1'

WebDriver 다운받기

  • Test하고 싶은 브라우저(Browser)를 선택하여 다운로드 받기
  • WebDriver 자료 : http://docs.seleniumhq.org/download/
  • 저는 ChromeDriver를 사용하여 진행하였습니다.

No Image

SpringBoot에 Selenium(셀레늄)을 활용하여 Test하기

Test Code 작성하기

@RunWith(SpringRunner.class)
@SpringBootTest
public class HomePageTest {
    private WebDriver driver;
    @Before
    public void setUp(){
        System.setProperty("webdriver.chrome.driver", "src/test/driver/chromedriver"); // 다운받은 ChromeDriver 위치를 넣어줍니다.
        driver = new ChromeDriver(); // Driver 생성
    }
    @After
    public void tearDown(){
        driver.quit();  // Driver 종료
    }

    @Test
    public void test_title(){ //타이틀 확인하는 테스트 코드
        driver.get("Test URL입력"); // URL로 접속하기
        WebElement coolestWidgetEvah = driver.findElement(By.id("coolestWidgetEvah")); //id로 Element 가져오기
        WebElement cheese = driver.findElements(By.className("cheese")); //클래스이름으로 Element 가져오기
        WebElement iframe = driver.findElement(By.tagName("iframe")); //태그이름으로 Element 가져오기
        Assert.assertThat(driver.getTitle(),is("URL의 Title")); // Title 확인 작업
    }
}

Test 결과확인하기

  • 성공시 결과화면

No Image

  • 실패시 결과화면

No Image

Conclusion

다양한 Selenium(셀레늄)의 기능들을 활용하여 많은 Test를 작성하여 시간과 노력을 절약할 수 있다.

Reference

0%