2015-04-22 87 views
0

我有junit testscript创建不同和唯一的ID。所以,当它发现一个现有的ID或一个错误的ID时,我希望通过ANT的测试脚本报告显示它在下面的记录中失败了,但是通过了其他正确的记录。我如何生成junit报告失败

   @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(); 

回答

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。

+0

谢谢@Jeff Bowman: - 我分开了我的测试用例。我对junit很陌生。现在我正在使用Try Catch Block。所以当我得到NoSuchElementException时,我需要使测试用例失败。简而言之,在catch块中捕获的任何错误都应该使我的测试脚本失败。现在它将它设置为蚂蚁生成报告中的错误。 @test(预期的NosuchElementFoundException)。将这项工作。测试脚本是一个积极的测试脚本,但它会得到一个异常,当我运行Build.xml文件时,它想要使其出现的测试脚本失败。 - – Monika

+0

放下'预期';你只希望如果一个异常表明测试正在工作。相反,请'尝试{/*...*/} catch(NSEE nsee){fail(); }'。也就是说,如果您有其他具体问题,请单独提出。 StackOverflow旨在成为具有全面答案的清晰问题的存储库,因此如果您经历了一个障碍,但仍然有问题,实际上最好提出一个单独的问题。祝你好运! –