9

一部の hamcrest マッチャーを使用するための静的インポートも含める必要がある JUnit4 テスト メソッド用の Java コード テンプレート (設定 -> Java -> エディター -> テンプレート) を作成したいと考えています。

${:importStatic('org.hamcrest.MatcherAssert.*')}
${:import(org.junit.Test)}
@Test
public void ${testName}() throws Exception {    
    ${cursor} 
}

コード テンプレートを保存できません - エラー メッセージが表示されます。

テンプレート変数 '' には互換性のない型があります。

どちらの import ステートメントでも問題なく動作するため、構文は正しいようです。

2 つの import ステートメントを組み合わせて連携させるにはどうすればよいですか?

4

2 に答える 2

12

これはうまくいくはずです:

${imp:import(org.junit.Test)}
${impst:importStatic('org.hamcrest.MatcherAssert.*')}

@Test
public void ${testName}() throws Exception {    
    ${cursor} 
}

編集:私が正しく思い出せば、最初の部分は名前変数として機能し、2番目の部分はタイプ(インポート、var、...)です。たとえば、次も機能しません

${:newType(org.eclipse.swt.widgets.ExpandItem)}
if (${:var(boolean)}) {
    ${cursor}
} else {

}

私の回答から imp または impst を削除することもできますが、それでも機能します。テンプレートでは、変数に対して複数のアクションを実行できます。良い例は List テンプレートです。

    ${type:newType(org.eclipse.swt.widgets.List)} ${list:newName(org.eclipse.swt.widgets.List)}= new ${type}(${parent:var(org.eclipse.swt.widgets.Composite)}, ${style:link('SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL', 'SWT.MULTI | SWT.V_SCROLL', SWT.MULTI, 'SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL', 'SWT.SINGLE | SWT.V_SCROLL', SWT.SINGLE)});
${list}.setLayoutData(new ${gridDataType:newType(org.eclipse.swt.layout.GridData)}(SWT.${horizontal:link(FILL, BEGINNING, CENTER, END)}, SWT.${vertical:link(FILL, TOP, CENTER, BOTTOM)}, ${hex:link(true, false)}, ${vex:link(true, false)}));
${list}.setItems(${word_selection}${});
${imp:import(org.eclipse.swt.SWT)}${cursor}

ここでは、リスト変数に対して複数の操作を実行しています

于 2013-08-09T08:56:53.923 に答える
1

Simonsの答えは私にとってはうまくいきました。

「ヘルプ - Eclipse プラットフォーム」では staticimport について説明し、例も示しています。Photon のバージョンについては、こちらを参照してください。

https://help.eclipse.org/photon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Fconcepts%2Fconcept-template-variables.htm

于 2018-11-08T16:34:38.540 に答える