четверг, 20 сентября 2012 г.

IDEA - как остановиться в брек-поинте только при определенных условиях?

По долгу службы тестировщикам так или иначе приходится сталкиваться с дебагом программы.

Тем, кто пишет автотесты - чаще, тем, кто занимается только ручным тестированием - реже. Но все равно бывает. Например, вы не понимаете, почему у вас не сработало какое-то условие. Зовете разработчика. Он приходит и на вашей машине дебажит.

Потом вы опять не понимаете, "что тут происходит". Опять зовете разработчика... И так по кругу. Рано или поздно научитесь делать это сами Smile :)

Я расскажу про интересный момент работы в IDEA.

Как известно, для дебага программы необходимо поставить брек-поинты на тех строках, в которые мы хотим попасть, чтобы посмотреть на входные / выходные параметры.

Но, допустим, что в эту строку мы попадаем часто - в программе стоит цикл, которые бегает по всем полям формы. А нам нужно, например, проверить только поле "surname".

Какие варианты? Ставим брекпоинт на строку и сидим, жмем resume (программа бежит дальше до следующей точки останова, в нашем случае, возвращается в начало цикла), пока в поле fieldName попадется нужное нам значение. Тут главное - не прозевать момент и на автомате не нажать на кнопку продолжения. Иначе придется начинать сначала.

Есть и другой вариант:

1. Нажимаем на кнопку "View Breakpoints"



2. Открывается окно "Breakpoints", в котором перечислены все установленные в коде брек-поинты.

3. Находим нужную нам строку (в которую мы хотим попасть только при определенном условии) и устанавливаем галку "Condition"



4. Вводим условие. Нам нужно, чтобы поле fieldName =  "surname". IDEA подсказывает, что мы можем иметь в виду.



5. Но, так как fieldName - строка, условие будет выглядеть так:
fieldName.equals("surname")
Все! Закрываем окно (сохранение автоматическое) и дебажим. А в указанную строку мы попадем тогда и только тогда, когда поле fieldName =  "surname"

2 комментария:

  1. В дополнение:
    Как это сделать в VS можно почитать тут: http://msdn.microsoft.com/en-us/library/7sye83ce.aspx

    ОтветитьУдалить