在我的项目中,我决定将单元测试和集成测试分成单独的程序包,而我的项目结构基本上如下所示:
├── main
│ ├── java
│ │ └── ...
│ └── resources
│ └── ...
├── test
│ └── java
│ └── ...
└── test-integration
├── java
│ └── ...
└── resources
└── ...
这是轻松分离两种测试的好选择,并且intellij重构在此解决方案中可以正常工作。一切都设置正确,使用gradle的test
插件将两个test sources roots
目录都标记为idea
,gradle识别了两个源集,我创建了两个单独的任务来运行每个测试套件,等等。我唯一的问题是intellij自动创建测试向导不会在这两个目录之间进行区分,我唯一可以修改的是Destination package
类路径,这显然对于两个测试目录都是相同的,并且没有选择选择哪个目录的选项。我想用。
是否有任何方法可以配置IDEA,让我可以选择要在其中生成测试的目录之间进行选择?还是某种gradle插件会根据其后缀移动测试文件(例如*Test
类转到test
目录,而*IT
类转到test-integration
目录)?也许根本就没有这样的选择:D
没有选择的方法。这是该对话框的the source。最终确定目录的是this method:
protected static List<VirtualFile> computeTestRoots(@NotNull Module mainModule) {
if (!computeSuitableTestRootUrls(mainModule).isEmpty()) {
//create test in the same module, if the test source folder doesn't exist yet it will be created
return suitableTestSourceFolders(mainModule)
.map(SourceFolder::getFile)
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
IntelliJ非常可扩展。您可以相对容易地编写自己的插件,从而通过用您自己的对话框替换与该操作关联的对话框来更改此行为。您自己的对话框通常可以是对已有内容的复制粘贴,但是使用selectTargetDirectory
的不同实现。