В примере показано использование элемента данных staticField и фрагмента датчика
staticInitializer.
В этом примере датчик отслеживает время создания экземпляров класса. Если
экземпляр создан спустя более чем одну секунду после создания предыдущего
экземпляра этого же класса, датчик заносит запись в протокол.
Что делает этот датчик:
- Используя
определение статического поля датчик создает статическое поле типа Date в каждом обработанном
датчиком классе. Статическое поле будет инициализироваться с помощью вызова new Date();.
- В фрагменте staticInitializer датчик устанавливает экземпляр Date обработанного датчиком класса на нулевую временную отметку (январь 1970) при загрузке.
- В фрагменте entry , датчик проверяет время предыдущего
обновления и создает отчет, если обновление было проведено более, чем секунду назад. (В
соответствии с целевыми правилами фрагмент entry исполняется только в
конструкторах).
- Наконец, датчик обновляет значение экземпляра Date до "now", то есть текущего времени.
Этот датчик использует определение статического поля для создания
нового статического поля в каждом
обработанном датчиком классе. Для сравнения, использование фрагмента в области действия
класса для объявления поля Date приведет к появлению одного экземпляра Date в сгенерированном классе, содержащем
фрагменты датчика, вне зависимости от того, в какое число классов встроен этот датчик. Это можно проделать при необходимости проследить временную задержку между созданием экземпляров тестируемого класса, вместо того, чтобы отслеживать задержку между созданием экземпляров всех тестируемых классов.
Датчик определяется следующими записями в редакторе Probekit:
- Полный
тип Java статического поля (в дереве щелкните на записи
Probe правой кнопкой мыши, выберите
и укажите следующее значение):
java.util.Date
- Target (для ввода этих значений
выберите в дереве запись Target и нажмите кнопку
Изменить):
- Целевой
тип: include
- Пакет: com.sample* (укажите фактическое имя
пакета).
- Класс: *
- Метод: <init>
- Сигнатура метода: *
- Target (для ввода этих значений
выберите Добавить, затем в панели редактирования нажмите
кнопку Изменить):
- Целевой
тип: exclude
- Пакет: *
- Класс: *
- Метод: *
- Сигнатура метода: *
- Fragment (выберите в дереве запись
Fragment и укажите следующие значения):