6

我需要将以下 Eclipse 模板移植到 IntelliJ IDEA

/**
 * See method name.
 */
@${testType:newType(org.junit.Test)}
public void should${testdesc}() {
  // given ${cursor}
  ${staticImport:importStatic('org.hamcrest.Matchers.*', 'org.junit.Assert.*', 'org.mockito.BDDMockito.*')} 
  // when

  // then

}

到目前为止我得到的是

/** 
 * See method name.
 */
@org.junit.Test
public void should$EXPR$() { 
  // given $END$ 
  ${staticImport:importStatic('org.hamcrest.Matchers.*', 'org.junit.Assert.*', 'org.mockito.BDDMockito.*')} 
  // when 

  // then

}

然后勾选Shorten FQ names标志。

${staticImport:importStatic()}表达式的 IDEA 等效项是什么?

4

2 回答 2

9

您不能只在实时模板中导入静态导入。(您可以为文件模板,见下文)。但是您可以在模板中使用方法时。您只需完全限定类,然后选择“Shorten FQ names”和“Use static import if possible”选项。例如,以下内容:

org.junit.Assert.assertEquals("$END$", $EXPECTED$, $ACTUAL$);

将导致:

import static org.junit.Assert.*;
. . .
assertEquals("my error message", myExpectedVar, myActualVar);

调用时。(我将$EXPECTED$$ACTUAL$变量设置为variableOfType("")具有相应的默认值expectedactual

如果您希望在所有单元测试中包含某些静态导入,那么我建议您编辑“类”文件和代码模板。例如:

package ${PACKAGE_NAME};

#if ($NAME.endsWith("Test"))
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static org.mockito.BDDMockito.*;
#end

#parse("File Header.java")
public class ${NAME} 
{  

#if ($NAME.endsWith("Test"))
    // Add any default test methods or such you want here.
#end

}

但是请记住,如果您打开了“动态优化导入”选项(在 IDE 设置 > 编辑器 > 自动导入中),静态导入将立即被删除,除非您还包含一个方法(或其他代码)使用静态导入。

于 2014-03-21T19:56:01.887 回答
1

现在可以使用静态导入添加实时模板

您必须在选项中检查静态导入

@org.junit.Test
public void should$EXPR$when$CONDITION$() {
    org.junit.Assert.assertThat(null, org.hamcrest.CoreMatchers.is(org.hamcrest.CoreMatchers.nullValue())); 
}

在此处输入图像描述

于 2020-06-18T16:24:02.650 回答