IntelliJ 结构搜索:在测试中尝试捕获

IntelliJ Structural Search : Try Catch in Tests

我最近从 Eclipse 切换到 IntelliJ Idea,我对这一变化感到非常满意。 但是,我不知道如何编写自己的 结构搜索模板

我想识别所有包含 try ... catch ... finally 块的测试方法,以便删除它们。 替换模板是第二个目标,首先我想了解如何找到它们。

我尝试使用现有的 Idea 模板来查找所有带有 @Test 注释的方法,并稍微修改了此模板:

class $Class$ {
    @Test
    $ReturnType$ $MethodName$($ParameterType$ $Parameter$);
}

我还使用了预定义模板来查找所有 try ... catch 块,我添加了 finally 检测:

try {
    $TryStatement$;
} catch($ExceptionType$ $ExceptionDcl$) {
    $CatchStatement$;
} finally{
    $FinallyStatment$;
}

但我不知道如何进一步混合这两个模板以找到包含 try ... catch ... finally 块的所有 测试方法

下面是我想用它找到的"bad tests"和"good tests"不匹配结构模板的例子:

public class Tests {

        @Test
        public void badTest() {

            // some code

            try {
                // some code
            } catch (Exception e) {
                // some code
            } finally {
                // some code
            }
            // some code
        }

        @Test
        public void goodTest() throws Exception {
            // some code
        }
    }

你们能给我一个线索吗?

此致,

朱利安。

您可以先搜索所有测试方法,然后搜索范围 Previous Search Results 中的所有 try-catch 块。这将为您提供测试方法中的所有 try-catch 个块,这可能与您需要的足够接近?