Как автоматически вставить обозначение класса, используя шаблоны eclipse? - PullRequest
4 голосов
/ 19 апреля 2010

Кто-нибудь знает, как вставить «@RunWith аннотацию» над сигнатурой класса, используя шаблоны eclipse?

Ex:.

@RunWith(Parameterized.class)
public class MyClassTest {
...
    @Parameters
    public static Collection<Object[]> parameters() {
        List<Object[]> list = new ArrayList<Object[]>();
        list.add(new Object[] { "mind!", "find!" });
        list.add(new Object[] { "misunderstood", "understood" });
        return list;
    }
...
}

__

Шаблон:

// TODO: move this '@RunWith(Parameterized.class)' to class anotation
    @Parameters
    public static Collection<Object[]> parameters() {
        ${type:elemType(collection)}<Object[]> parametersList = new ${type:elemType(collection)}<Object[]>();
        ${cursor}// TODO: populate collection
        return parametersList;
    }

__ Спасибо за помощь!

1 Ответ

3 голосов
/ 20 апреля 2010

К сожалению, вы не можете использовать шаблоны Eclipse для добавления аннотации к существующему классу включения (по крайней мере, не так, как я знаю). Тем не менее, есть обходной путь. Вот модифицированная версия вашего шаблона:

@${runnerType:newType(org.junit.runner.RunWith)}(${paramterizedType:newType(org.junit.runners.Parameterized)}.class)
public class ${primary_type_name} {
    @${parametersType:newType(org.junit.runners.Parameterized.Parameters)}
    public static ${collectionType:newType(java.util.Collection)}<Object[]> parameters() {
        ${baseCollectionType}<Object[]> parametersList = new ${concreteCollectionType}<Object[]>();
        ${cursor}// TODO: populate collection
        return parametersList;
    }
}

Чтобы использовать шаблон (при условии, что он называется «Параметризованный»):

  1. Создать новый класс в Eclipse
  2. Прежде чем делать что-либо еще, выберите объявление класса заглушки, включая открывающую и закрывающую скобки.
  3. Введите имя шаблона и нажмите Cntrl+Space, чтобы активировать шаблон (возможно, вам придется выбрать шаблон из списка шаблонов. У меня есть только один шаблон с именем Parameterized, поэтому Eclipse просто использует его автоматически для меня) .

Определение класса будет заменено определением, включающим аннотацию @RunWith. Я использовал шаблонную переменную $ { id : newName (reference)} , чтобы Eclipse автоматически добавлял все необходимые операции импорта (за исключением импорта для ${baseCollectionType} и ${concreteCollectionType}, вам придется добавить их вручную ... слава Богу, за Cntrl-Shift-M)

Это действительно сложно описать. Вам придется попробовать это, чтобы увидеть, как именно это работает. Оставьте комментарий, если мои инструкции требуют уточнения.

...