Java 如何将静态导入添加到IntelliJ IDEA live模板

Java 如何将静态导入添加到IntelliJ IDEA live模板,java,intellij-idea,live-templates,Java,Intellij Idea,Live Templates,我需要将以下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.BDDMoc

我需要将以下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

}
然后勾选
缩短FQ名称
标志


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

您不能只在活动模板中导入静态导入。(您可以选择文件模板,请参见下文)。但是,在模板中使用方法时可以。您只需完全限定该类,然后选择“缩短FQ名称”和“尽可能使用静态导入”选项。例如,以下各项:

org.junit.Assert.assertEquals("$END$", $EXPECTED$, $ACTUAL$);
将导致:

import static org.junit.Assert.*;
. . .
assertEquals("my error message", myExpectedVar, myActualVar);
调用时。(我将
$EXPECTED$
$ACTUAL$
变量设置为
variableOfType(“”
),并带有相应的默认值
EXPECTED
ACTUAL

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

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设置>编辑器>自动导入中),静态导入将立即被删除,除非还包括方法(或其他代码)这就利用了静态导入。

现在可以通过静态导入添加实时模板

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

@org.junit.Test
当$CONDITION$()时,公共void应为$EXPR${
Assert.assertThat(null,org.hamcrest.CoreMatchers.is(org.hamcrest.CoreMatchers.nullValue());
}

这正是我在谷歌搜索“assertEquals live template”时想要的,这是一个很好的答案。