【问题标题】:Find all 'public void' methods not annotated with '@Test'查找所有未使用“@Test”注释的“公共无效”方法
【发布时间】:2016-02-13 17:56:52
【问题描述】:

我想对我的测试执行结构搜索,以检测所有看起来像测试但未使用 @Test 注释的方法。

我尝试了这种模式但没有成功(没有找到匹配的代码):

@$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

我做错了什么?

【问题讨论】:

    标签: java intellij-idea structural-search


    【解决方案1】:

    看来,您也必须尝试为您的模式提供一个类,就像在模板中完成的那样:

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

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

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

    public void testSomething() {
    
    }
    
    public void shouldSomething() {
    
    }
    

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

    【讨论】:

    • 在下一版本的 IntelliJ IDEA 中将可以使用没有环绕类的方法模式。
    • 谢谢,它有效,但我不得不用public void 替换$MethodType$,因为它也匹配private 方法
    • @MichalKordas 不客气。是的,我只是插入了这个作为示例,默认情况下它是如何完成的。在测试它时,我使用了与您提供的相同的模式,但使用了类
    【解决方案2】:

    您也可以尝试JUnit 4 类中的旧式JUnit 测试方法检查。此检查检测看起来像测试但未使用 @Test 注释的方法。

    【讨论】:

    • 不幸的是,这对我不起作用,因为我的大多数测试用例都以 should 而不是 test 开头。
    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多