【问题标题】:Intellij Idea "Move refactoring" with Junit tests使用 Junit 测试的 Intellij Idea “移动重构”
【发布时间】:2009-07-13 10:22:48
【问题描述】:

似乎当我进行“移动”重构时,我所有的 junit 测试都放在了它的旧位置上。我经常测试“包”可见类,因此如果 SUT 移动到另一个包,它们就会变得不可见。

您是否手动移动测试?

【问题讨论】:

  • 恐怕我无法理解您的问题。您能否提供更多信息?这可能有助于回答这个问题(+1 以便您发表评论)
  • 假设我在包 xxx 中有 AAA 级。类的目的地是 src/xxx/AAA.java,假设我有一个测试位于 test/xxx/AAATest.java 所以,当我将 AAA 类移动到包 yyy 时,我的测试停留在 xxx 包。

标签: junit intellij-idea


【解决方案1】:

我有 4 个选项供您选择:

  1. 转到左侧的“包”视图,选择这两个文件,然后按 F6。它应该将它们都移动到正确的位置。

  2. 在进行重构之前暂时公开该类,然后再切换回来。

  3. 先尝试移动测试。我似乎记得避免破坏任何依赖关系。

  4. 有一个插件(我认为是 toggleTestunitTest-- 我都安装了它们)可以修补 Move Refactor 以同时带来测试。工作得很好。不幸的是,这些似乎不适用于最新的 IDEA。

【讨论】:

    【解决方案2】:

    你描述的行为是完全正常的。

    src/package1/A.java
    test/package1/ATest.java
    

    在您的ATest.java 中有一个import package1.A;
    重构之后,它看起来像这样:

    src/package2/A.java
    test/package1/ATest.java
    

    测试代码留在原地。您没有移动测试代码,而是移动了源代码。它不应影响任何其他文件夹(如您的示例中)。
    ATest.java 中的引用现在必须是 import package2.A;。否则,重构出错了。

    尽管如此,您的测试应该可以工作,即使它们位于不同的目录中。那是因为重构方法改变了导入。

    如果你想清理你的文件夹结构,你必须手动将包test/package1重命名为test/package2(我知道,包是package1package2,但我想加强关注文件夹结构。

    希望能帮到你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      相关资源
      最近更新 更多