Я новичок в Junit и тестировании фреймворков в целом, вот мой вопрос.Дизайнерские зависимости в JUnit Test Class
У меня есть следующий код:
public class Login extends WebsiteTestCase
{
@Test
public void testChromeLogin()
{
setDriver(getChromeDriver());
login(getDriver());
}
public void login(WebDriver driver)
{
driver.get(getBaseURL());
WebElement username = driver.findElement(By.name("login_username"));
WebElement password = driver.findElement(By.name("login_password"));
WebElement submit = driver.findElement(By.cssSelector("form#login input"));
username.sendKeys(getUsername());
password.sendKeys(getPassword());
submit.submit();
assertEquals("Website HomePage", driver.getTitle());
}
@After
public void tearDown() throws Exception
{
getDriver().quit();
}
}
и
public class WebsiteTestCase extends StockholmTestCase
{
public String username = "login", password_login = "password";
private String baseURL = "http://website.com";
public String getUsername()
{
return this.username;
}
public String getPassword()
{
return this.password_login;
}
public String getBaseURL()
{
return this.baseURL;
}
}
и
public class StockholmTestCase extends TestCase
{
private WebDriver driver;
public WebDriver getChromeDriver()
{
return new RemoteWebDriver(DesiredCapabilities.chrome());
}
public WebDriver getFireFoxDriver()
{
return new RemoteWebDriver(DesiredCapabilities.firefox());
}
public WebDriver getDriver()
{
return this.driver;
}
public void setDriver(WebDriver driver)
{
this.driver = driver;
}
}
Как вы можете видеть в WebsiteTestClass, я закодировав текущее имя пользователя для входа и пароль, и baseURL, который отлично работает для моих тестов. Но если я хочу «программно» установить среду для тестирования (возможно, для разных программистов разные логин, пароль, разные baseurl, ex: «http://Bob.dev.website.com»), вместо этого я хотел бы иметь возможность создать экземпляр WebsiteTestCase с разными свойства для учетных данных для входа, с конструктором.
как
public class Stockholm
{
public static void main(String args[])
{
JUnitCore junit = new JUnitCore();
Result result = junit.run(new Login(/* credentials here, settings */));
}
}
в отличие от
public class Stockholm
{
public static void main(String args[])
{
JUnitCore junit = new JUnitCore();
Result result = junit.run(Login.class);
}
}
Я понимаю, в приведенном выше коде, что я не пропускании экземпляр Вход в junit.run, так как я бы разработать код для выполнения эти вещи в этом контексте?
Если я получаю все эти свойства, завернутые в экземпляр класса, например: Настройка веб-сайта = новый набор веб-сайтов (getSettingsFromFile (файл)); Как бы я вставлял этот объект в тест Junit? – SobiborTreblinka
Вам не нужно вводить его в тест. Вы загружаете свойства для каждого тестового класса. – Prasanna