2015-04-22 107 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旨在成爲具有全面答案的清晰問題的存儲庫,因此如果您經歷了一個障礙,但仍然有問題,實際上最好提出一個單獨的問題。祝你好運! –