0

我有 junit testscript 可以创建不同且唯一的 ID。因此,当它找到现有 ID 或错误 ID 时,我希望通过 ANT 的测试脚本报告显示它对于以下记录失败,但对于其余正确的记录通过。

                @Test
                public void testCreateTrade() throws Exception
                driver.findElement(By.id("VIN")).clear();
                driver.findElement(By.id("VIN")).sendKeys(vVin);
                String str = driver.getCurrentUrl();
                if(str.contains("step1")) // for existing ID
                {
                    driver.findElement(By.cssSelector("body > div.bootbox.modal.in > div.modal-footer > a.btn.null")).click();
                    break;
                }
                driver.findElement(By.id("mileage")).sendKeys(vMileage);
                driver.findElement(By.id("odometerType")).sendKeys(vKm);
                driver.findElement(By.id("passengers")).sendKeys(vPassengers);
                driver.findElement(By.id("exteriorColor")).sendKeys(vExterior);
                driver.findElement(By.id("interiorColor")).sendKeys(vInterior);
                driver.findElement(By.id("hasAccident")).sendKeys(vAccident);
                driver.findElement(By.id("dealerSalesPerson")).sendKeys(vSalesPerson);
                driver.findElement(By.id("step3btn")).click();
                Thread.sleep(1000);
                String str3 = driver.getCurrentUrl();
                if(str3.contains("step2")) // Loop for wrong ID
                {
                    driver.findElement(By.linkText("Create")).click();
                    driver.findElement(By.xpath("html/body/div[7]/div[2]/a[1]")).click();
                    //System.out.println("Is a wrong Vin"+vVin);
                    break;
                }
                driver.findElement(By.id("step4btn")).click();
                driver.findElement(By.id("windshieldCondition")).sendKeys(vWindshield);
                driver.findElement(By.id("tireCondition")).sendKeys(vTire);
                driver.findElement(By.id("accidentBrand3")).sendKeys(vAcBrand);
                driver.findElement(By.id("confirmedParked")).click();
4

1 回答 1

0

如果您希望单个测试用例在“失败”后继续运行,然后在最后报告其异常,请使用ErrorCollector

@RunWith(JUnit4.class) public class YourTestClass {
  @Rule public ErrorCollector errorCollector = new ErrorCollector();

  @Test public void yourTest() {
    // ... (your setup)
    for (Record record : expectedRecords) {
      if (dataSource.hasRecord(record.getId())) {
        Record fetchedRecord = dataSource.getRecord(record.getId());
        errorCollector.checkThat(record, matchesRecordValuesOf(record));
      } else {
        errorCollector.addError(new IllegalStateException(""));
      }
    }
  }
}

但是请注意,每次单元测试最好只测试一件事。在这里它可能有意义,但不要过度使用 ErrorCollector 重构和拆分测试更有意义。

于 2015-04-22T20:47:53.333 回答