Java Gradle test log4j.xml

Java Gradle test log4j.xml,java,gradle,log4j2,Java,Gradle,Log4j2,抱歉,如果这还不够信息,gradle新手,如果需要更多信息,请告诉我。 我在gradle.properties文件中定义的配置文件夹中有一个log4j2.xml project.ext.logConfigFile="./config/log4j2.xml" 我的项目结构 项目 src 测试 lib 配置 log4j2.xml 现在,当我运行gradle测试时,它说找不到log4j2配置 这就是我的build.gradle文件的样子 sourceSets { test {

抱歉,如果这还不够信息,gradle新手,如果需要更多信息,请告诉我。 我在gradle.properties文件中定义的配置文件夹中有一个log4j2.xml

project.ext.logConfigFile="./config/log4j2.xml"
我的项目结构

项目
src
测试
lib
配置
log4j2.xml

现在,当我运行gradle测试时,它说找不到log4j2配置

这就是我的build.gradle文件的样子

sourceSets {
    test {
        java {
            srcDirs = ["test"]
        }
    }
    main {
        java {
            srcDirs = ["src"]
        }
    }
}


test {
    testLogging {
        outputs.upToDateWhen {false}
        showStandardStreams = true
        events "PASSED", "STARTED", "FAILED", "SKIPPED"
        afterSuite { desc, result ->
            if (!desc.parent) { // will match the outermost suite
                println "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
      }
    }
  }
}
我在网上找到了很多东西,这就是为什么在“测试日志”部分有这么多陈述。但基本上,我有LOGGER.info()语句不会出现,因为它只默认为错误

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
我能告诉gradle test我的log4j2.xml的确切位置吗?像这样的?虽然我认为这不管用

tasks.withType(Test) { 
     systemProperty 'log4j.configuration', logConfigFile
}

现在有点卡住了。谢谢

只需将其放入
src/test/resources
。这在测试过程中首先出现在类路径上。然后将log4j配置为从类路径而不是文件路径加载;我认为这是默认行为,不管怎样

相信我解决了这个问题,您只需定义资源在源集中的位置即可。它将在那里查找log4j2.xml

sourceSets {
    test {
        java {
            srcDirs = ["test"]
        }
        resources {
            srcDirs = ["config"]
        }
    }
    main {
        java {
            srcDirs = ["src"]
        }
    }
}

这是在做什么任务?使用类型(Test)?所以…我认为这使得所有的测试都采用这个系统属性?这意味着所有测试都将使用log42.xml文件。真的不太肯定,我从互联网上的某个地方抓到了它。如果不是正确的方法,我很乐意摆脱它。这也行得通,但涉及到我改变目录结构,我找到了一个不同的解决方案,如果我只是RTFM的话。谢谢你!因此,发明自己的项目结构而不是遵循我建议的方法是更好的?我不知道你的情况,但如果我是由hourAgree支付报酬的话,这将是很好的,但我不想对现有的代码库做太多修改。我们最终应该达成一致,达成共识。