【问题标题】:How to configure Eclipse automatic static imports to prefer MatcherAssert.assertThat over Assert.assertThat?如何配置 Eclipse 自动静态导入以更喜欢 MatcherAssert.assertThat 而不是 Assert.assertThat?
【发布时间】:2021-04-12 23:38:36
【问题描述】:

我们最近升级到 JUnit 4.13,我的项目被涂成黄色警告,因为 Assert.assertThat 现在已被弃用,取而代之的是 MatcherAssert.assertThat。

批量更改我的静态导入没什么大不了的,但我希望今后我可以配置 Eclipse 以在新代码中做正确的事情。但无论我做什么,自动导入器都会继续使用已弃用的Assert.assertThat,而不是MatcherAssert。

我尝试过的一些事情:

  • 将org.hamcrest.MatcherAssert.* 添加到首选项 -> Java -> 编辑器 -> 内容辅助 -> 收藏夹。现在,当没有导入并且我将鼠标悬停在代码上时,我将 MatcherAssert.assertThat 视为快速修复建议。但这根本不影响自动导入。

  • 将org.junit.Assert.assertThat 添加到首选项 -> Java -> 外观 -> 类型过滤器。 (我也试过org.junit.Assert.* 甚至org.junit.*)这似乎对静态导入没有影响。当我尝试使用org.junit.* 时,我可以看到设置对常规导入生效,但对静态导入没有任何影响。

所以无论我做什么,当我在没有明确拉入 MatcherAssert.assertThat 的情况下点击保存时,自动导入会改为拉入 Assert.assertThat。

你知道有没有办法解决这个问题?

【问题讨论】:

    标签: eclipse junit junit4 hamcrest


    【解决方案1】:

    我的一位同事做了一些超级调查,发现从 Eclipse 2020-09 开始,内容辅助收藏夹现在会影响自动静态导入:

    Bug 283287 - [organize imports] Could use favorites for static imports

    由于收藏夹配置允许您指定特定的类成员,我可以通过添加 org.hamcrest.MatcherAssert.* 然后将我以前的 org.junit.Assert.* 更改为更具体的集合来解决这个问题,包括该类的所有公共成员除了assertThat。

    最后,我有这样的东西,它在自动导入和内容辅助快速修复建议中都做了正确的事情。

    【讨论】:

    • 所以你至少落后了两个版本?
    • 不,我是最新的,但是我在网上读到的关于如何配置自动“组织导入”的所有内容都谈到了使用类型过滤器,并暗示内容辅助收藏夹只会影响内容辅助弹出-UPS。所以最初我什至没有尝试过这种方法。
    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 2019-09-28
    • 1970-01-01
    • 2022-12-14
    • 2011-02-12
    • 2010-09-24
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多