5

Eclipseテンプレートを使用して、クラス署名の上に「@RunWithアノテーション」を挿入する方法を知っている人はいますか?

元。:

@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;
    }

__ 助けてくれてありがとう!

4

1 に答える 1

3

残念ながら、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 という名前のテンプレートを 1 つしか持っていないので、Eclipse はそれを自動的に使用します)。

@RunWithクラス定義は、アノテーションを含む定義に置き換えられます。${ id :newName(reference)}テンプレート変数を使用して、Eclipse が必要なすべてのインポートを自動的に追加するようにしました ( と のインポートを除いて、${baseCollectionType}手動${concreteCollectionType}で追加する必要があります... ありがとうございますCntrl-Shift-M)

これを説明するのは本当に難しいです。それがどのように機能するかを正確に確認するには、試してみる必要があります。私の指示を明確にする必要がある場合は、コメントを投稿してください。

于 2010-04-20T01:43:50.803 に答える