Элементы данных фрагмента датчика

Элементы данных фрагмента представляют собой имена и типы элементов данных, связанных с исходным кодом фрагмента.

Спецификацию элементов данных указывать не обязательно. Фрагмент может содержать несколько элементов данных; элементы данных одинаковых типов недопустимы.

Ниже перечислены допустимые свойства элемента данных:
Свойство Описание
Тип данных Обязательный атрибут. Возможные типы перечислены ниже в таблице.
Имя Обязательный атрибут. Задает допустимое имя переменной Java. Это имя применяется в исходном коде фрагмента датчика для обращения к данным.
В следующей таблице перечислены типы данных, поддерживаемые редактором Probekit, а также указаны соответствующие описания:
Тип данных тип Описание
className String

В случае датчиков метода задает имя тестируемого класса во внутреннем формате, включая имя пакета; в случае датчиков вызова - имя класса вызываемого метода.

Пример: org/eclipse/tptp/SomeClass

methodName String

В случае датчиков метода задает имя тестируемого метода; в случае датчиков вызова - имя вызываемого метода.

В качестве имени методов для конструкторов используется <init>, для инициализаторов статических классов - <clinit>.

methodSig String

Аргумент метода и сигнатура типа возврата во внутреннем формате. Неприменимо для фрагментов staticInitializer.

Пример: (Ljava/lang/String;)I

thisObject Object

Объект this (для методов экземпляра), переданный тестируемому методу. Неприменимо для фрагментов staticInitializer.

thisObject имеет значение null для статических методов, для фрагментов entry, примененных к конструктору, и для фрагментов exit, примененных к конструкторам, при возникновении в конструкторах исключительных ситуаций.

args Object[]

Массив ссылок Object представляет аргументы тестируемого метода. В массиве содержится по одному элементу для каждого аргумента метода (не считая this). Аргументы простых типов помещаются во временные объекты соответствующих типов, например: Integer для int. Если метод не использует аргументы, это будет массив Object[] нулевого размера.

Обратите внимание на то, что конструкторы для не статических внутренних классов имеют один скрытый аргумент на "внутреннем" уровне, таким образом, массив аргументов будет содержать больше элементов, чем находится в исходном коде. Неприменимо для фрагментов staticInitializer.

returnedObject Object Ссылка на возвращаемый объект. Этот тип доступен только для фрагментов exit и afterCall. Если возвращаемый тип обрабатываемого счетчиком тестируемого метода является простым типом, возвращаемое значение помещается во временный объект подходящего типа. Если для метода указан тип void (не возвращает значение), либо в случае завершения работы в результате возникновения исключительной ситуации, то returnedObject будет иметь значение null.
exceptionObject Throwable Ссылка на объект исключительной ситуации. Этот тип доступен только для фрагментов catch и exit. Если метод завершил работу нормально, exceptionObject будет иметь значение null.
isFinally boolean Флаг, указывающий на то, был ли фрагмент вызван из оператора finally (истина) или из оператора catch (ложь). Допустимо только для фрагментов catch.
staticField (разные типы) Объект, к которому обращаются по статическому полю. Его тип такой же, как и указанный в объекте staticField. Применимо только в том случае, если датчик объявляет поле staticField. (См. Пример staticField и staticInitializer.) Неприменимо для датчиков вызова.
classSourceFile String Информация имени исходного файла, доступная из атрибутов отладки файла class. Если исходная информация не указана, classSourceFile будет иметь значение null. Для файла Java значением обычно является простое имя файла, без сведений о пути. Неприменимо для датчиков вызова.
methodNames String

Кодированный список имен методов и сигнатур. Порядок расположения методов в этом списке такой же, как и порядок расположения методов в methodLineTables, такой же порядок используется и элементом данных methodNumber. Список не включает в себя имена методов, вставленных в класс с помощью Probekit.

Строка methodNames состоит из одного или более имен методов и сигнатур, разделенных символом плюса ("+"). Сигнатуры методов записаны во внутреннем формате Java. Например, класс с двумя методами, у которого метод run конструктора по умолчанию принимает String и возвращает int, имеет следующую строку methodNames: <init>()V+run(Ljava/lang/String;)I

Неприменимо для датчиков вызова.

methodLineTables String Кодированный список номеров строк, относящихся ко всем исполняемым модулям кода в классе. Список не включает в себя исполняемые модули, вставленные в класс с помощью Probekit. Сведения о кодировании приведены в разделе Формат строки methodLineTables. Неприменимо для датчиков вызова.
methodNumber Integer Индексный номер в таблице methodNames для метода, в который вставлен фрагмент датчика. Неприменимо для датчиков вызова и фрагментов staticInitializer.
executableUnitNumber Integer Номер исполняемого модуля, в который был вставлен фрагмент датчика. Этот тип данных допустим только для фрагментов датчиков executableUnit и catch. Если метод не содержит информации о номерах строк, у него будет лишь один исполняемый модуль с нулевым номером.
Пример:

Для того чтобы ввести элементы данных фрагмента датчика, выберите в дереве запись Fragment, затем с помощью кнопок Добавить и Изменить, расположенных в панели редактирования, укажите и задайте элементы данных.

Редактор Probekit, в котором показаны элементы данных фрагмента

Связанные справочники
Исходный код Java фрагмента датчика
Типы фрагментов датчиков