2017-02-10 5 views
-1

Например, следующий код должен поймать исключение:Проблема с исключениями и TestNG и Eclipse?

  1. Исключение получает выводимый на консоль window == correct
  2. Исключение не показывает, как провалиться по testNg == wrong

Любые идеи, почему это происходит?

Мой код:

public void scrollToElementByLocator() { 
    try { 
     driver.findElement(By.id("wrong locator")).click(); 
    } catch (Exception e) { 
     System.out.println("Exception! - unable to scroll to element, Exception: " + e.toString()); 
    } 
} 
+0

'Исключение не показывает, как сбой в TestNG == wrong', в этом случае исключение отображается в консоли? Или это касается маркировки теста как «Сбой»? –

+0

@Naveen исключение выводится на консоль, только dosnt показывается с красным значком на консоли TestNG eclipse, спасибо – Gbru

+4

Возможный дубликат [Почему мой метод «Wait» не прерывается или исключает исключение?] (Http: // stackoverflow. com/questions/42156532/why-is-my-wait-method-not-failing-or-catching-exception) – juherr

ответ

1
TestNG marks a test as Fail, if the code inside the test raises any Exception. 

В вашем коде, как вы регулируете исключение по своему усмотрению, поймав его, исключение не будет доведен до абонента, так, TestNG никогда не знает что исключение возникает в коде.

Удалить try-catch блок, поэтому исключение будет поднято из теста, поэтому TestNG может пометить тест как Fail.

попробуйте следующий код:

@Test 
public void scrollToElementByLocator() { 
     driver.findElement(By.id("wrong locator")).click(); 
} 

Примечание: Вы должны отметить метод с @Test аннотацию, чтобы сказать TestNG, что это метод испытания.


Если вы хотите выполнить какие-либо действия, если исключение воскресает, то попробуйте следующий код (кидать исключение вы захватили с помощью throw ключевого слова):

@Test 
public void scrollToElementByLocator() { 
    try { 
     driver.findElement(By.id("wrong locator")).click(); 
    } catch (Exception e) { 
     System.out.println("Exception! - unable to scroll to element, Exception: " + e.toString()); //prints the exception 
    throw e; 
    } 
} 
+0

благодарит за вашу помощь, но если тест не был отмечен как исключение, когда неправильный локатор был специально использован, разве не был бы напечатан System.out.println в блоке catch {}? – Gbru

+0

, если вы используете неправильный локатор (т. Е. Локатор, который не соответствует ни одному веб-элементу), тогда будет вызван 'NoSuchElementException', который будет передан блоку' catch'. поэтому, system.println печатает сообщение. Лучшим подходом является «Никогда не использовать try and catch block», если вы не хотите убежать от «известных сбоев». –

+1

Я настоятельно рекомендую изучать 'обработку исключений' в' Java', которая очистит все ваши сомнения. вот официальный документ: https://docs.oracle.com/javase/tutorial/essential/exceptions/. вы можете найти множество статей, связанных с ними. –