java - 按顺序进行 Junit 自动化测试

标签 java selenium junit

我在 Java 的一个类中创建了 Junit 测试。基本上,一个类在该类中具有多个测试用例,并且当测试运行时,chrome 页面会出现一个空白页面。它运行无序,就像它重置每个 @test senario 一样调出另一个 chrome 页面而不是在同一页面中执行每个测试并进入下一个测试,依此类推。当我在(一个@test case)中运行这一切时,它工作正常。

我使用 protractor 和编程的方式与描述相同,没有问题。我正在尝试使用 Junit 在 Java 中执行相同的操作,因此如果测试用例失败,我可以快速转到该测试用例。我有 @Before 和 @Test 和 @after 注释

请帮助我对 Java 没有那么丰富的经验。我的代码如下。

 public class BankrateAlt {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @Before
  public void setUp() throws Exception {
    System.setProperty("webdriver.chrome.driver", "C:\\eclipse\\Java\\chromedriver\\chromedriver.exe");  
    System.setProperty("webdriver.gecko.driver", "C:\\eclipse\\Java\\geckodriver\\geckodriver.exe");  
    driver = new ChromeDriver();
    baseUrl = "http://www.bankrate.com/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test 
  public void moveToElementMortgages() throws InterruptedException{
      Actions builder = new Actions(driver);
      WebElement element = driver.findElement(By.linkText("MORTGAGES"));
      builder.moveToElement(element).perform();
      Thread.sleep(2000);
  }

  @Test 
  public void clickOnCalculators() throws InterruptedException{
      Actions builder = new Actions(driver);
      WebElement calculator = driver.findElement(By.cssSelector("a[href*='mortgage-calculators']"));
      builder.moveToElement(calculator).perform();
      calculator.click();
      Thread.sleep(2000);
  }

  @Test 
  public void nextPageScrollDown() throws InterruptedException{ 
      ((JavascriptExecutor)driver).executeScript("scroll(0, 400)");
      Thread.sleep(2000);
  }

  @Test 
  public void clickMorgageLoanPaymentCalc() throws InterruptedException{  

      WebElement MorgageCalc = driver.findElement(By.linkText("Mortgage loan payment calculator"));  
      MorgageCalc.click();
      Thread.sleep(2000);
  }

  @Test 
  public void scrollDownCalcPage() throws InterruptedException{  

      ((JavascriptExecutor)driver).executeScript("scroll(0, 400)");
        Thread.sleep(2000);
  }

  @Test 
  public void clearMortgageSendKeys() throws InterruptedException{  

      WebElement MortgageField = driver.findElement(By.id("KJE-LOAN_AMOUNT"));
      MortgageField.clear();
      Thread.sleep(1000);

      WebElement LoanAmount = driver.findElement(By.name("LOAN_AMOUNT"));
      LoanAmount.sendKeys("$240,000");
      Thread.sleep(3000);
  }

最佳答案

JUnit 不会按顺序运行测试,因为单元测试应该能够独立运行(因此可以按任何顺序运行)。

这是一个简单的修复,但您可以做的就是从所有方法中删除所有 @Test 注释并添加以下测试:

@Test 
public void fullTest() {
  moveToElementMortgages();
  clickOnCalculators();
  nextPageScrollDown(); 
  clickMorgageLoanPaymentCalc();
  scrollDownCalcPage();
  clearMortgageSendKeys();
}

如果您想以更精致的方式执行此操作,请阅读页面对象模式。或者最近的剧本模式

关于java - 按顺序进行 Junit 自动化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839443/

相关文章:

java - 对于以下代码片段,我需要编写 JUnit 测试用例的帮助。任何解决方案或代码提示将不胜感激

python - 对同一解析函数产生多个请求。函数运行的顺序是什么?抓取痧

mysql - 将 String 替换为 Regexp 以获取从 Robot 框架中的 MySQL Query 获取的值

java - 递归链表反转器

java - 使用 Clojure/Java 从 s3 读取流

python - selenium.common.exceptions.TimeoutException : Message: script timeout: result was not received in 30 seconds

java - 通过 Ant 运行测试时出现 NoClassDefFoundError 但在 Tomcat 中部署时工作正常

java - 在 JUNIT 测试中未创建 Hibernate 事务

java - 无法使用 Apache POI 为一行的某些部分添加项目符号点和样式(例如粗体和斜体)

java - 不同对象的哈希码相同