Find all 'public void' methods not annotated with '@Test'

时间:2015-11-12 12:00:32

标签: java intellij-idea structural-search

I want to perform structural search on my tests to detect all methods that look like tests but are not annotated with @Test.

I tried with this pattern with no success (no matching code found):

@$Annotation$ public void $method$()

$Annotation$ - text like: ^Test$, min occurs: 0, max occurs: 0
$method$ - text like: should|test, min occurs: 1, max occurs: 1

What am I doing wrong?

2 个答案:

答案 0 :(得分:2)

似乎,你必须尝试为你的模式提供一个类,因为它是在模板中完成的:

class $Class$ {
  @$Annotation$( )
  $MethodType$ $MethodName$($ParameterType$ $ParameterName$);
}

此外,您必须将$method$变量更改为should.*|test.*之类的内容,才能接受整个单词。

我已经使用IntelliJ Idea 15进行了测试,它适用于以下方法:

public void testSomething() {

}

public void shouldSomething() {

}

仅当搜索模板中提供了$Class$且方法名称正则表达式包含.*以匹配任何方法时,该名称以testshould开头。

答案 1 :(得分:0)

您还可以在JUnit 4类检查中尝试旧样式JUnit测试方法。此检查会检测看起来像测试的方法,但不会使用@Test进行注释。