2015-04-22 2 views
0

У меня есть сценарий junit, который создает разные и уникальные идентификаторы. Поэтому, когда он находит существующий идентификатор или неправильный идентификатор, я хочу, чтобы отчет тестового скрипта через 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

Thanks @Jeff Bowman: - Я отделил свои тестовые примеры. Я новичок в junit. И теперь я использую Try Catch Block. Поэтому, когда я получаю исключение NoSuchElementException, мне нужно пропустить свой тестовый пример. Короче говоря, любая ошибка, пойманная в блоке catch, должна привести к сбою моего тестового скрипта. теперь он устанавливает его в Error in ant. @test (Ожидаемое исключение NosuchElementFoundException). будет ли это работать. Сценарии тестирования являются положительным тестовым сценарием, но он получает исключение, чтобы скрыть тестовый скрипт, который возникает как ошибка при запуске файла Build.xml. - – Monika

+0

Оставьте «ожидаемый»; вам нужно только, чтобы исключение указывало, что тест работает. Вместо этого попробуйте {/*...*/} catch (NSEE nsee) {fail(); } '. Тем не менее, если у вас есть другой конкретный вопрос, спросите его отдельно. StackOverflow предназначен для хранения ясных вопросов с исчерпывающими ответами, поэтому на самом деле предпочтительнее задать отдельный вопрос, если вы преодолели одно препятствие, но у вас все еще есть вопросы. Удачи! –

Смежные вопросы