Intellij Idea“;“移动重构”;使用Junit测试

Intellij Idea“;“移动重构”;使用Junit测试,junit,intellij-idea,Junit,Intellij Idea,似乎当我进行“移动”重构时,我所有的junit测试都放在了原来的位置上。我经常测试“包”可见类,所以如果SUT移动到另一个包,这些类就不可见了 你用手移动测试吗?你描述的行为是完全正常的 src/package1/A.java test/package1/ATest.java 在您的ATest.java中有一个导入包1.A 重构后,看起来如下所示: src/package2/A.java test/package1/ATest.java 测试代码留在他所在的地方。您没有移动测试代码,而是移动

似乎当我进行“移动”重构时,我所有的junit测试都放在了原来的位置上。我经常测试“包”可见类,所以如果SUT移动到另一个包,这些类就不可见了


你用手移动测试吗?

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

src/package1/A.java
test/package1/ATest.java
在您的
ATest.java
中有一个
导入包1.A
重构后,看起来如下所示:

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

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

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


我希望我能帮助你!

我有4个选项供你选择:

  • 转到左侧的“包”视图,选择两个文件,然后点击F6。它会将它们都移动到正确的位置

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

  • 首先尝试移动测试。我似乎记得这样可以避免破坏任何依赖关系

  • 有一个插件(我想它是或者——我已经安装了它们两个)修补了Move重构,同时也带来了测试。效果很好。不幸的是,这些插件看起来可能不适用于最新的想法


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