Java 在intellij idea中使用多个测试目录自动创建测试
在我的项目中,我决定将单元测试和集成测试拆分为单独的包,我的项目结构基本上如下所示:Java 在intellij idea中使用多个测试目录自动创建测试,java,testing,gradle,intellij-idea,Java,Testing,Gradle,Intellij Idea,在我的项目中,我决定将单元测试和集成测试拆分为单独的包,我的项目结构基本上如下所示: ├── main │ ├── java │ │ └── ... │ └── resources │ └── ... ├── test │ └── java │ └── ... └── test-integration ├── java │ └── ... └── resources └── ... 这是一个很好的选择,可以
├── main
│ ├── java
│ │ └── ...
│ └── resources
│ └── ...
├── test
│ └── java
│ └── ...
└── test-integration
├── java
│ └── ...
└── resources
└── ...
这是一个很好的选择,可以轻松地分离两种测试,intellij重构可以很好地与此解决方案配合使用。一切都设置正确,两个test
目录都标记为testsources root
使用gradle的idea
插件,gradle识别两个源集,我创建了两个独立的任务来运行每个测试套件等。我唯一的问题是intellij自动创建测试向导没有区分这两个目录,我唯一可以修改的是目标包
类路径,这两个测试目录显然是相同的,而且我没有选择哪一个的选项
有没有办法配置IDEA,让我可以在生成测试的目录之间进行选择?或者某种gradle插件可以根据后缀移动测试文件(例如,*test
类转到test
目录,*IT
类转到测试集成
目录)?或者可能根本就没有这样的选择:D
没有这样做的选项。这是对话的答案。最终决定目录的是:
protectedstatic List computeestroots(@NotNull Module main Module){
如果(!computeSuitableTestRootUrls(mainModule).isEmpty()){
//在同一模块中创建测试,如果测试源文件夹尚不存在,则将创建它
返回suitableTestSourceFolders(主模块)
.map(SourceFolder::getFile)
.filter(对象::非空)
.collect(Collectors.toList());
}
IntelliJ具有很强的可扩展性。您可以相对轻松地编写自己的插件,通过将与操作相关联的对话框替换为自己的对话框来改变这种行为。您自己的对话框可能主要是已经存在的内容的复制粘贴,但下一步将使用不同的
selectTargetDirectory
实现之后,“创建测试”对话框应为“选择目标目录”:
v2020.1.1()中的行为
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());
}