tranvanhumg / web-auto-basic

web-auto-basic
0 stars 0 forks source link

Bài 02 - Hướng dẫn sử dụng annotation @Before and @After của Junit #2

Open thienphuong opened 5 years ago

thienphuong commented 5 years ago

Một số resource cần tham khảo

https://junit.org/junit4/javadoc/latest/ https://java2novice.com/junit-examples/junit-annotations/

thienphuong commented 5 years ago

Trong 3 test methods ở bài 1 có 3 phần:

Phần 1: Mở một trang web

        System.setProperty("webdriver.chrome.driver", ".\\drivers\\chromedriver.exe");
        WebDriver chromeDriver = new ChromeDriver();

        chromeDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        chromeDriver.manage().window().maximize();

        chromeDriver.get("https://duckduckgo.com/");

Phần 2: Tương tác với các đối tượng theo kịch bản

        // interact with any element on page

        chromeDriver.findElement(By.id("search_form_input_homepage")).sendKeys("Selenium Vietnam");
        chromeDriver.findElement(By.id("search_button_homepage")).click();
        // check something: Web page title

        String acutalTile = chromeDriver.getTitle();
        String actualExpect = "Selenium Vietnam at DuckDuckGo";
        // Verify
        assertEquals(acutalTile, actualExpect);

Phần 3: Thoát khỏi trình duyệt.

        chromeDriver.close();
        chromeDriver.quit();

Trong 3 phần trên thì phần thứ 2 có thể code sẽ khác nhau. nhưng phần 1 và 3 luôn giống nhau ở tất cả các test method.

thienphuong commented 5 years ago

Để tránh bị trùng code của phần 1 ở các methods ta nên tách phần 1 thành một method dùng chung. Không phải là test method và để đảm bảo nó luôn chạy trước các test methods ta sử dụng annotation @Before

Chú ý đối tượng WebDriver ta khai báo thành đối tượng biến của class để dùng chung cho các methods.

Ta có đoạn code mong đợi như sau

WebDriver  chromeDriver = new ChromeDriver();
       @Before
       public void tearUp(){
        System.setProperty("webdriver.chrome.driver", ".\\drivers\\chromedriver.exe");
        chromeDriver = new ChromeDriver();

        chromeDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        chromeDriver.manage().window().maximize();

        chromeDriver.get("https://duckduckgo.com/");
       }
thienphuong commented 5 years ago

Để tránh bị trùng code của phần 3 ở các methods ta nên tách phần 1 thành một method dùng chung. Không phải là test method và để đảm bảo nó luôn chạy sau cùng mỗi test methods ta sử dụng annotation @After

       @After 
       public void tearDown(){
        chromeDriver.quit();
       }

Không cần dùng chromeDriver.close();