Перейти к содержимому

Фотография

Помогите разобраться ошибками в Eclipse


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 ganzalik228

ganzalik228

    Активный участник

  • Members
  • PipPip
  • 79 сообщений
  • ФИО:Артур

Отправлено 07 апреля 2012 - 08:33

Где просмотреть ошибки теста? делаю на JUnit.
Пишу тест, запускаю (знаю что ошибок в нём нет), всё проходит, сразу после теста окна браузера закрываются.
Запускаю тест и специально делаю там ошибку. Например verifyTrue(selenium.isElementPresent(....)), такого элемента нет 100%. Тест также проходит, в Error Log ничего нет. В Failure Trace следующее:
"java.lang.AssertionError: java.lang.AssertionError: null
at com.thoughtworks.selenium.SeleneseTestBase.fail(SeleneseTestBase.java:360)
at com.thoughtworks.selenium.SeleneseTestBase.assertTrue(SeleneseTestBase.java:365)
at com.thoughtworks.selenium.SeleneseTestBase.assertTrue(SeleneseTestBase.java:369)
at com.thoughtworks.selenium.SeleneseTestBase.verifyTrue(SeleneseTestBase.java:129)
at com.thoughtworks.selenium.SeleneseTestCase.verifyTrue(SeleneseTestCase.java:119)
at com.example.tests.asd.testNew(asd.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:212)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

at com.thoughtworks.selenium.SeleneseTestBase.fail(SeleneseTestBase.java:360)
at com.thoughtworks.selenium.SeleneseTestBase.checkForVerificationErrors(SeleneseTestBase.java:398)
at com.thoughtworks.selenium.SeleneseTestCase.checkForVerificationErrors(SeleneseTestCase.java:33)
at com.example.tests.asd.testNew(asd.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:212)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)"

Вот и как понять, если не знать конечно что в данной команде ошибка и такого локатора нет, что тут ошибка? Заранее спасибо
  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 07 апреля 2012 - 09:55

проверки типо verifyTrue или assert лучше использовать только тогда, когда уверен на 99%, что проверка будет верна иначе будет Failure (сбой). Если ты не уверен, что проверка пройдет, заменяй её простым if

типо:
if isElementPresent() {
System.out.println("Все хорошо")
else
System.out.println("Элемент не найден")
  • 0

#3 ganzalik228

ganzalik228

    Активный участник

  • Members
  • PipPip
  • 79 сообщений
  • ФИО:Артур

Отправлено 07 апреля 2012 - 10:29

Понял. спасибо большое
  • 0

#4 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 09 апреля 2012 - 07:38

проверки типо verifyTrue или assert лучше использовать только тогда, когда уверен на 99%, что проверка будет верна иначе будет Failure (сбой). Если ты не уверен, что проверка пройдет, заменяй её простым if


Это неверно. Assert проверки нужно юзать как минимум 1 раз в конце любого теста(if никогда не сможет заменить всю гибкость таких проверок). Другое дело verify проверки, в принципе я их юзаю только если какие-то действия проходные и в целом не влияют на конечный результат, но при этом важно чтоб я знал, что в них произошла ошибка(просто записываю их в Log).
  • 0

#5 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 09 апреля 2012 - 17:35

Это неверно. Assert проверки нужно юзать как минимум 1 раз в конце любого теста(if никогда не сможет заменить всю гибкость таких проверок).


Не понял тебя, покажи пример кода
  • 0

#6 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 10 апреля 2012 - 07:12

Ну к примеру:
LoginPage loginPage = app.go();
loginPage.login().as( "..." ).withPassword( "..." ).withAutoLogin().perform();
Assert.assertTrue( (new HomePage(app)).isThisPage() );
Второй варинант:
LoginPage loginPage = app.go();
loginPage.login().as( "..." ).withPassword( "..." ).withAutoLogin().perform();
HomePage homePage = new HomePage(app);
Assert.assertEquals( homePage.getTableOne(), homePage.getTableTwo()  );

зы. смысл в том, что без проверок это не тест, а просто выполнение каких-то действий
А так делать нельзя:
if isElementPresent() {
System.out.println("Все хорошо")
else
System.out.println("Элемент не найден") 
так как по-любому тест завершиться успешно
  • 0

#7 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 10 апреля 2012 - 08:04

Теперь понял, что ты имел ввиду

А так делать нельзя:

if isElementPresent() {
System.out.println("Все хорошо")
else
System.out.println("Элемент не найден") 
так как по-любому тест завершиться успешно


Понятно, что тест будет всегда успешным
можно ввести переменную типо int not_found_element = 0;

if isElementPresent() {
System.out.println("Все хорошо")
} else {
System.out.println("Элемент не найден") 
not_found_element++;
}

потом в конце теста ввести проверку, т.е. если not_found_element - равен 0, то кейс пассед, если не равен, то faild

Если надо проверить например сотни таких элементов, то не нужно писать сотни if, а сделать один метод, который будет делать данную проверку
  • 0

#8 D2Phoenix

D2Phoenix

    Постоянный участник

  • Members
  • PipPipPip
  • 200 сообщений
  • ФИО:Чадюк Вадим
  • Город:Гродно


Отправлено 10 апреля 2012 - 10:08

Если надо проверить например сотни таких элементов, то не нужно писать сотни if, а сделать один метод, который будет делать данную проверку

Всё это делается "мягкими" проверками. Как их реализовать можно посмотреть здесь
  • 1

#9 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 10 апреля 2012 - 10:29

Всё это делается "мягкими" проверками. Как их реализовать можно посмотреть здесь


спс, буду разбираться
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных