Idea配置Live Templates位置如上图
File and Code Templates
Includes
File Header
text
/**
* @description $description
* @author: 聂明智
* @date: ${DATE}-${TIME}
*/
Code
Junit5 Test Class
text
#set($SOURCE_NAME_INDEX= $NAME.length() - 4)
#set($SOURCE_CLASS_NAME = $NAME.substring(0,$SOURCE_NAME_INDEX))
#set($BEAN_NAME = $SOURCE_CLASS_NAME.substring(0,1).toLowerCase() + $SOURCE_CLASS_NAME.substring(1))
import lombok.extern.slf4j.Slf4j;
import static org.junit.jupiter.api.Assertions.*;
import org.mockito.Spy;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
#parse("File Header.java")
@ExtendWith(MockitoExtension.class)
@Slf4j
class ${NAME} {
@Spy
${SOURCE_CLASS_NAME} ${BEAN_NAME};
${BODY}
}
live templates
log
text
private static final Logger log = LoggerFactory.getLogger($CLASS_NAME$.class);
test
text
@Test
@SneakyThrows
@DisplayName("")
void $METHOD_NAME$() {
$METHOD_BODY$
}
gwt
text
// given
// when
// then
sleep
text
try { TimeUnit.SECONDS.sleep($SECONDS$); } catch (InterruptedException e) { throw new RuntimeException(e); }
thread 新建一个线程:
text
new Thread(() -> {
$threadBody$
}, $threadName$).start();
@DNA
text
@Data
@NoArgsConstructor
@AllArgsConstructor
getEnum
public static Optional<$CLASS_NAME$> getEnumByCode(Integer code) {
return Arrays.stream(values())
.filter(e -> e.code.equals(code))
.findFirst();
}
枚举类$CLASS_NAME$
会失效获取不到ClassName需要自己配置