当前位置: 首页 > 知识库问答 >
问题:

带有Gradle Kotlin DSL和Intellij的自定义测试源集

阎鹏
2023-03-14

我的项目是使用Gradle与Kotlin DSL进行构建。我现在要添加一个用于测试的自定义源集。有关守则如下:

java {
    sourceSets.create("systemTest") {
        java.srcDir("src/system-test/java")
        resources.srcDir("src/system-test/resources")
    }
}
idea.module {
 testSourceDirs.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
testSourceDirs.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)
}

有没有使用Kotlin DSL声明自定义源集并将其标记为测试模块的经验?

编辑:我现在使用Groovy创建了一个示例Gradle项目,使用下面的代码(我猜这只是我上面语句的Groovy版本),它工作起来没有问题:

sourceSets {
  systemTest {
    java {
      compileClasspath += main.output + test.output
      runtimeClasspath += main.output + test.output
      srcDir file('src/system-test/java')
    }
    resources.srcDir file('src/system-test/resources')
  }
}

idea {
    module {
        testSourceDirs += project.sourceSets.systemTest.java.srcDirs
        testSourceDirs += project.sourceSets.systemTest.resources.srcDirs
    }
}

因此,要么是我对Kotlin DSL的转换错误,要么是Intellij端的bug。

共有1个答案

宇文俊明
2023-03-14

好像我把Kotlin变换搞错了,应该是的

idea.module {
    val testSources = testSourceDirs

    testSources.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
    testSources.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)

    testSourceDirs = testSources
}

使用此片段,将更改TestSourceDirs集,并将相关的sourceset标记为test Module。

 类似资料:
  • 我们正在使用spring和Spring-Security-3.2。最近,我们向RESTAPI添加了注释@preauthorize(以前是基于URL的)。 我们已经有了用-@ControllerAdvice和自定义的PermissionEvaluator注释的全局异常处理程序,除了错误消息之外,其他一切都正常工作。 是否可能抛出一个包含权限名称的异常,所以最终的错误消息应该是“Access Is d

  • 我尝试开发一个小android应用程序,并显示一个对话框警报,其中只包含一个edittext,以填充自定义内容作为下一个链接 创建自定义布局我有这个代码,但它不工作 } 但是代码循环运行 我不明白 在我班上的主要活动 我有这个密码 这是我的风格。xml 我的logcat是下一个 谢谢你的帮助,

  • 我正在为Rest控制器编写一个错误条件的测试用例,当我将expected exception设置为exception.class时,测试运行时没有错误。当我将预期的异常更改为CustomException.class时,测试失败并出现断言错误 下面是我的控制器类: 如上所述,如果我在测试中将预期的异常更改为CustomException.class,如下所示: 我看到导致测试失败。我尝试了@Rul

  • 问题内容: 我正在使用.NET的HttpClient向WebAPI发出请求,该WebAPI返回一些JSON数据,该数据需要在客户端进行一些自定义反序列化。为此,我已经完成了自己的工作,但是我不知道如何让该方法处理转换器的存在。 通过使用读取响应,然后将该字符串传递给,我已经解决了我的问题,但是似乎应该有一个更优雅的解决方案。 这是我的代码: 这是我所能做到的最好的,还是有一些更优雅的方法? 如果需

  • 我尝试用自定义控制器制作一个自定义组件。自定义组件已经显示在应用程序上,但我未能向其添加属性。 项目结构: null 布尔马尔科 完全错误: 原因:java.lang.nullPointerException:无法调用“javafx.scene.image.imageeview.setimage(javafx.scene.image.image)”,因为“controller.topbarbtn.