Что сделать чтобы не закрывался RC и браузер при возникновении ошибки
#1
Отправлено 26 января 2010 - 11:14
В общем в чем проблема: когда юзал VisualStudio, то при возникновении проблем в скрипте, студия высвечивала на какой строке проблемы, но не выключала RC и браузер. Можно было исправить скрипт и продолжить его прогон с того же места, где и остановился. Сейчас юзаю Eclipse. Если сдеть возникает ошибка в строке, то он тушит RC и браузер, вследствии приходится прогонять по новой весь скрипт с начала.
Смотрел в настройки Eclipce, но там, вроде, нет ничего такого.
Подскажите что можно сделать.
Спасибо
#2
Отправлено 26 января 2010 - 12:47
Максимум могу порекомендовать запускать тесты в режиме отладки с установкой брекпоинтов в нужных местах. Только правка кода во время сессии отладки не приведет к выполнению исправленного кода. Надо перезаупскать тест.Здравствуйте!
В общем в чем проблема: когда юзал VisualStudio, то при возникновении проблем в скрипте, студия высвечивала на какой строке проблемы, но не выключала RC и браузер. Можно было исправить скрипт и продолжить его прогон с того же места, где и остановился. Сейчас юзаю Eclipse. Если сдеть возникает ошибка в строке, то он тушит RC и браузер, вследствии приходится прогонять по новой весь скрипт с начала.
Смотрел в настройки Eclipce, но там, вроде, нет ничего такого.
Подскажите что можно сделать.
Спасибо
#3
Отправлено 26 января 2010 - 15:39
Не пробовали отлавливать Exception-ы?Здравствуйте!
В общем в чем проблема: когда юзал VisualStudio, то при возникновении проблем в скрипте, студия высвечивала на какой строке проблемы, но не выключала RC и браузер. Можно было исправить скрипт и продолжить его прогон с того же места, где и остановился. Сейчас юзаю Eclipse. Если сдеть возникает ошибка в строке, то он тушит RC и браузер, вследствии приходится прогонять по новой весь скрипт с начала.
Смотрел в настройки Eclipce, но там, вроде, нет ничего такого.
Подскажите что можно сделать.
Спасибо
Это может помочь...
try { // выполняется скрипт // ... // ... } catch (Exception e) { // вылетел Exception // делаем что нам нужно и продолжаем работу } // продолжаем выполнение скрипта
Вот...
Про Тестинг
#4
Отправлено 26 января 2010 - 16:14
Если править код впереди -- всё получится. А если какая-то строчка уже выполнилась, неважно успешно или со сбоем -- её действительно уже править бесполезно, она повторно не выполнится, надо перезапускать.Максимум могу порекомендовать запускать тесты в режиме отладки с установкой брекпоинтов в нужных местах. Только правка кода во время сессии отладки не приведет к выполнению исправленного кода. Надо перезаупскать тест.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
#5
Отправлено 26 января 2010 - 17:36
Абсолютно согласен. Просто использовать режим отладки я порекомендовал только потому, что подобный режим наиболее подходит под описание топик-стартера. В частности подходит возможностью контроля выполнения определенных участков.Если править код впереди -- всё получится. А если какая-то строчка уже выполнилась, неважно успешно или со сбоем -- её действительно уже править бесполезно, она повторно не выполнится, надо перезапускать.Максимум могу порекомендовать запускать тесты в режиме отладки с установкой брекпоинтов в нужных местах. Только правка кода во время сессии отладки не приведет к выполнению исправленного кода. Надо перезаупскать тест.
#6
Отправлено 04 февраля 2010 - 10:30
В С# нормально работает debug с кодод такого типа:
namespace SeleniumTests
[codebox]
{
[TestFixture]
public class Untitled
{ private ISelenium selenium;
private StringBuilder verificationErrors;
[SetUp]
public void SetupTest()
{selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://it4business.ru/");
selenium.Start();
}
[Test]
public void TheUntitledTest()
{
selenium.Open("http://google.com");
selenium....
}
[/codebox]
В java нормально с таким:
[codebox]
public class ololo {
static Selenium selenium;
public static void main(String[]arg) throws Exception
{
selenium = new DefaultSelenium("localhost",
4444, "*chrome", "http://www.google.com");
selenium.start();
selenium.open("http://www.google.com");
} [/codebox]
но в чем его минус, так это в том,что с таким кодом не запускается JUnit.
Подскажите что можно наколдовать, чтобы и debug работал и JUnit запускался =)
#7
Отправлено 04 февраля 2010 - 11:13
Так вы и оформляйте тесты, как JUnit-тесты. В Eclipse такие тесты в режиме отладки запускаются по правому клику выбором меню Debug As... > JUnit TestЯ что-то слабо верю, что нет выхода из этой ситуации.
В С# нормально работает debug с кодод такого типа:
namespace SeleniumTests
...
В java нормально с таким:public class ololo { static Selenium selenium; public static void main(String[]arg) throws Exception { selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://www.google.com"); selenium.start(); selenium.open("http://www.google.com");}но в чем его минус, так это в том,что с таким кодом не запускается JUnit.
Подскажите что можно наколдовать, чтобы и debug работал и JUnit запускался =)
#8
Отправлено 04 февраля 2010 - 11:30
А как их оформлять? Если скинуть просто этот код в JUnit Test Case, то при выборе запуска высвечивается только Java Application, но никак ни Junit TestТак вы и оформляйте тесты, как JUnit-тесты. В Eclipse такие тесты в режиме отладки запускаются по правому клику выбором меню Debug As... > JUnit TestЯ что-то слабо верю, что нет выхода из этой ситуации.
В С# нормально работает debug с кодод такого типа:
namespace SeleniumTests
...
В java нормально с таким:public class ololo { static Selenium selenium; public static void main(String[]arg) throws Exception { selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://www.google.com"); selenium.start(); selenium.open("http://www.google.com");}но в чем его минус, так это в том,что с таким кодом не запускается JUnit.
Подскажите что можно наколдовать, чтобы и debug работал и JUnit запускался =)
#9
Отправлено 04 февраля 2010 - 16:04
Тут нужно сделать несколько проверок. Во-первых, надо убедиться, что тестовые методы имеют соответствующую аннотацию @Test или же имя начинается с префикса test.А как их оформлять? Если скинуть просто этот код в JUnit Test Case, то при выборе запуска высвечивается только Java Application, но никак ни Junit Test
Также, возможно, вам понадобится установить JUnit плагин к эклипсу. Например, здесь, в частности URL обновления: http://www.junitfactory.com/update/
Да и просто посмотрите в гугле JUnit eclipse plugin
#10
Отправлено 19 октября 2010 - 11:32
Не пробовали отлавливать Exception-ы?
Это может помочь...
я пробовал.
Гоняю тесты из под NetBeans через PHPUnit
...
(спустя час) - заработало, но всё равно очень странно:
код
$arr = array ( '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href' ); for ($i=0;$i<10;$i++) { $xpath = $arr[$i]; try {$name = $this->getAttribute($xpath); fwrite ($log_h, "№-$i OK: getAttribute(".$xpath.") = $name \n "); } catch (Exception $e) {fwrite ($log_h, "№-$i ERROR: function getAttribute(".$xpath.") return error!\n ");} }
выдаёт запись в лог вроде
continue log №-0 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-1 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-2 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-3 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-4 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-5 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-6 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-7 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-8 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-9 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/
Но если заменить одно из условий напирмер в массиве
$arr = array ( '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'!Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href', '//a[contains(text(),\'Компьютеры\')]@href' );
(добавили лишний символ 6 элементу начиная с нуля,)
то тот-же самый скрипт выдаст такой результат:
continue log №-0 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-1 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-2 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-3 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-4 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-5 OK: getAttribute(//a[contains(text(),'Компьютеры')]@href) = /Kompjutery/ №-6 ERROR: function getAttribute(//a[contains(text(),'!Компьютеры')]@href) return error! №-7 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error! №-8 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error! №-9 ERROR: function getAttribute(//a[contains(text(),'Компьютеры')]@href) return error!
т.е. получается если одно из условий ляснулось, то и на все остальные вешается Expection...
Это особенность PHPUnit ?
#11
Отправлено 19 октября 2010 - 15:17
Короче если тест завалился то его уже ничего не спасёт, только новый тест.
Если использовать тест как драйвер для броузера с целью именно безошибочно управлять бруозером - то нужно просто програмно избегать ошибок. Например всяческие
$r = $this->isElementPresent ('link=Компьютеры');а если делать именно проверку на сбои, то нужно делать множество мальеньких тестиков и выполнять их. Почти во всех местах прочитал одно и то-же. Как говорится, пошёл искать копейку - чтобы купить яблоко - копейку не нашёл, зато нашёл яблоню.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных