2013-12-13 2 views
0

Я следующие два метода во всех моих классах:Как делиться @Before и @Test среди классов в Selenium 2?

@Before 
public void setUp() throws Exception {  
    WebDriver driver = new FirefoxDriver(); 
    String baseUrl = "http://trn-test-web.fon.com/"; 
    selenium = new WebDriverBackedSelenium(driver, baseUrl); 
} 

@Test 
public void firstTest() throws Exception{ 
    selenium.open("/opencase/login.seam"); 
    selenium.type("//input[contains(@id, ':username')]", "admin"); 
    selenium.type("//input[contains(@id,':mypassword')]", "admin"); 
    selenium.click("//a[contains(@id,'loginForm:')]/span"); 
    selenium.waitForPageToLoad("60000");   
    _wait("Home", "id=oc-title-id"); 
} 

Как я могу поделиться @Before и @Test методы с другими классами в проекте, так что они не будут открывать свою собственную страницу входа и использовать те же baseUrl и войти в список классов?

ответ

1

Лучший способ сделать это - применить метод @Before в абстрактном классе, что-то вроде AbstractUITest и сделать все ваши тесты наследуемыми от этого класса, таким образом, каждый раз при запуске теста метод @Before выполненных из абстрактного класса, и все они могут использовать baseUrl.

3

Вы можете сделать класс (TestBase), который будет простираться тестами

public class TestBase { 

    protected WebDriver driver; 
    protected Selenium selenium 

@Before 
public void setUp() throws Exception {  
    driver = new FirefoxDriver(); 
    String baseUrl = "http://trn-test-web.fon.com/"; 
    selenium = new WebDriverBackedSelenium(driver, baseUrl); 
} 

@Test 
public void firstTest() throws Exception{ 
    selenium.open("/opencase/login.seam"); 
    selenium.type("//input[contains(@id, ':username')]", "admin"); 
    selenium.type("//input[contains(@id,':mypassword')]", "admin"); 
    selenium.click("//a[contains(@id,'loginForm:')]/span"); 
    selenium.waitForPageToLoad("60000");   
    _wait("Home", "id=oc-title-id"); 
} 

Вот как использовать его

public class ExampleTest extends TestBase { 

@Test 
public void secondTest() throws Exception { 
    selenium.open("http://stackoverflow.com/"); 
} 

теперь каждый раз при запуске класса ExampleTest, он будет работать firstTest и secondTest

Смежные вопросы