当前位置:  开发笔记 > 编程语言 > 正文

如何将静态导入添加到IntelliJ IDEA实时模板

如何解决《如何将静态导入添加到IntelliJIDEA实时模板》经验,为你挑选了1个好方法。

我需要将以下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等价物是什么?



1> Javaru..:

您不能只在实时模板中导入静态导入.(您可以使用文件模板,请参阅下文).但是你可以在模板中使用方法.您只需完全限定该类,然后选择"缩短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设置>编辑器>自动导入中),则会立即删除静态导入,除非您还包含一个方法(或其他代码)使用静态导入.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有