2013-01-10 40 views
8

Tôi là người thử nghiệm thủ công đang cố gắng tìm hiểu GEB và Spock. Để tìm hiểu những điều này tôi có phải có kiến ​​thức trước về java hay groovy? Tôi đã đọc cuốn sách của GEB, các điều kiện tiên quyết, sách hoặc tài nguyên học tập là gì? Hãy giúp tôi. Cảm ơn.Tìm hiểu GEB và Spock

Trả lời

28

Tôi đã cố gắng biên soạn một số yếu tố cần thiết và một số 'ưu thích' mà tôi thấy rất hữu ích khi tôi chọn Geb.

  1. Một số Groovy Magic. Hầu hết tất cả những gì bạn cần để học Groovy được trình bày trong sách hướng dẫn này nhưng vì những lý do hiển nhiên nếu bạn bị ám ảnh bởi ngôn ngữ bạn có thể muốn xem xét Groovy in Action. Trong khi Java không cần thiết để lấy Groovy, Nếu bạn đến từ một Java (ngoại trừ các bao đóng) hoặc thậm chí là một nền Python, bạn có thể lướt qua hướng dẫn trong 15 phút và bạn đã có sẵn).

  2. Một chút Selenium. Càng nhiều, tốt hơn nhưng không sợ, điều này single page cho bạn biết tất cả những gì bạn cần biết về Selenium Webdriver mà bạn thường sử dụng. Nhưng để nhấn mạnh, càng nhiều càng tốt.

  3. Bộ chọn jQuery (mọi người nói rằng nó rất dễ dàng nhưng thẳng thắn, tôi tham khảo hướng dẫn sử dụng ít nhất hai lần mỗi giờ. Tôi câm, vì vậy ...). Nếu bạn chưa quen với jQuery, bạn sẽ muốn bắt đầu từ basic selectors và nhấp vào menu điều hướng bên trái để biết thêm. Xin lưu ý rằng không phải tất cả các bộ chọn jQuery đều có thể áp dụng cho Geb nhưng phần bộ chọn của hướng dẫn Geb không hoàn toàn đầy đủ và hấp dẫn.

  4. Khi kết thúc testcase, tôi cần tạo báo cáo huyền ảo trải dài trên nhiều testcases và tôi có phụ thuộc trong số testcases. Vì vậy, tôi đã đi cho TestNG thay vì Spock. Thành thật mà nói, tôi đã không cho Spock nhiều cơ hội.

  5. PageObjects thực sự không phải là điều kiện tiên quyết cho Geb nhưng PageObjects thật tuyệt vời đến nỗi bạn không bao giờ muốn nghĩ về Geb bên ngoài nó. PageObjects là một mẫu nhỏ dễ thương, nói rằng bạn quấn cấu trúc của trang HTML của bạn vào một đối tượng để kiểm tra thực tế không phải đối phó với nó. Hah. Có bạn. Hãy để tôi đặt nó bằng tiếng Anh đơn giản.

Giả sử, bạn có biểu mẫu đăng ký có hộp nhập liệu có id "nametext". Làm thế nào bạn sẽ có được xử lý của hộp văn bản? Xét về DOM, trong javascript, bạn sẽ chỉ làm một

document.getElementById("nametext") 

trong Selenium, bạn sẽ làm một điều rất giống

driver.findElement(By.id("nametext")) 

Vì vậy, nếu bạn muốn để cư Jason trong hộp văn bản của bạn trong Selenium, bạn sẽ làm một

driver.findElement(By.id("nametext")).sendKeys("Jason"); 

Nếu bạn làm điều đó cho tất cả các lĩnh vực đầu vào của bạn, rất sớm testcases của bạn trở nên xấu xí và đáng ghét. Thay vào đó, trong điều kiện OO, bạn đóng gói.Bạn tạo một lớp mới, nói RegistrationPage và quấn bạn findElementsendKeys như trong:

public class RegistrationPage{ 

    … 

    public RegistrationPage fillRegistrationForm(String name, String email){ 

     driver.findElement(By.id("nametext")).sendKeys(name); 
     driver.findElement(By.id("emailtext")).sendKeys(email); 

    } 

} 

và từ testcase của bạn, bạn sẽ nói

RegistrationPage regPage=new RegistrationPage(); 
    regPage.fillRegistrationForm("Jason","[email protected]"); 

(ý tưởng Thậm chí tốt hơn là để bọc các giá trị đầu vào của bạn vào một lớp học và chuyển nó đến fillRegistrationForm)

Thực tế, Geb thúc đẩy PageObject theo cách tốt hơn - Bộ chọn jQuery để giải cứu

class InputFormPage extends Page{ 

    … 

    static content={ 
     name {$("input", id:"entry_0")} 
     emailAddress {$("input", id:"entry_1")} 
    } 
} 

và trong testcase của bạn, bạn sẽ chỉ nói

name.value ("Jason") 
emailAddress.value ("[email protected]") 
+0

Một số liên kết là lỗi thời, 'http://groovy.codehaus.org/Beginners+Tutorial 'không thể mở,' PageObjects' quá –