【问题标题】:Set java system properties for tests in IntelliJ在 IntelliJ 中为测试设置 java 系统属性
【发布时间】:2018-04-05 11:12:45
【问题描述】:

在我基于 gradle 的项目中,我有以下集成测试目标:

task integrationTests(type: Test, group: "Test") {
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath = sourceSets.integrationTest.runtimeClasspath
    mustRunAfter test

    useJUnit {
        maxParallelForks 2
    }

    systemProperty 'application.name', 'applicationName'
}

它从命令行运行得很好,但是在 IntelliJ 中它会出现错误:Application startup failed MDC:[requestId=, userGuid=] java.lang.IllegalStateException: required key [application.name] not found

我看过这个帖子:Set java system properties in IntelliJ or Eclipse 并且了解如何为(测试)任务设置系统属性甚至默认属性。

但是有没有办法让 IJ “理解” gradle 配置或以其他方式使其使用systemProperty

【问题讨论】:

  • 那么...在 Gradle 下,您是在谈论 JUnit 测试配置吗?由于 JUnit 运行/调试配置中可能存在环境变量
  • 感谢 vikingsteve - 是的,我知道可以在运行/调试配置中设置环境变量,甚至可以使用默认配置。我在说,IJ 能以某种方式从 gradle config 导入这些吗?
  • 是否有 Gradle 运行/调试配置?可以右键任务名称创建一个吗?
  • 我可以创建一个,但运行它有问题。我认为我的 gradle 配置有点狡猾。不错的提示!
  • 您是否考虑过在测试本身中添加环境变量? (换句话说,是否有充分的理由通过 gradle 传递它?)

标签: java gradle intellij-idea


【解决方案1】:

这是一个老问题,我知道从那以后我已经多次解决了这个问题。

所以一个人需要做两件事: 1.在你的IJ的测试虚拟机选项中添加-Dapplication.name=appName 2.在你的build.gradle中找到gradle任务(或者新建一个),并为application.name系统属性添加特定的映射,如:

bootRun {
    systemProperties['application.name'] = System.getProperty("applicagtion.name")
    ...
}

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    相关资源
    最近更新 更多