Intellij Idea中的“移动重构”和Junit测试

11

看起来当我做“移动”重构时,我的所有junit测试都留在它们原来的位置。通常我测试“包”可见类,所以如果SUT移动到另一个包中,它们就会变得不可见。

您是手动移动测试吗?


很抱歉,我无法理解您的问题。您能否提供更多信息?这将有助于回答您的问题(+1,以便您可以发表评论)。 - guerda
假设我有一个位于包xxx中的类AAA。该类的目标位置是src/xxx/AAA.java,而且假设我有一个位于test/xxx/AAATest.java的测试文件。 所以,当我将类AAA移动到包yyy时,我的测试文件仍然保留在xxx包中。 - dmitrynikolaev
2个回答

3

我有4个选项给你:

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

  2. 在重构之前暂时将类公开,并在之后切换回去。

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

  4. 有一个插件(我想它是toggleTestunitTest - 我安装了两个),它会修补Move Refactor,以使测试也随之移动。效果很好。不幸的是,看起来这些可能无法与最新的IDEA一起使用。


0

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

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,但我想强调文件夹结构)。

希望我能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接