gpt4 book ai didi

gradle - Gradle-配置测试包括从属性文件

转载 作者:行者123 更新时间:2023-12-03 05:11:27 24 4
gpt4 key购买 nike

我已经用Gradle构建了一个Java项目,并创建了一个属性文件,其中包含针对我的测试框架的自定义配置(要使用的线程数量,测试环境url,这些环境的自定义用户名和密码,等等)。

我遇到一个与使用该文件中的属性有关的问题,但我不知道:

  • 如果我的测试任务include '**/*Test.class',则所有测试均按预期运行。
  • 如果我的测试任务include '**/MyTest.class',则仅该测试按预期运行。
  • 如果我的测试任务为include readProperty(),则该任务被跳过为NO-SOURCE。 <-这是我无法理解的部分-因为readProperty返回正确的值。

  • 让我们来谈谈细节:

    这是在 my.property文件中定义属性的方式:
    testng.class.includes='**/MyTest.class'

    这是 build.gradle文件的样子:
    Properties props = new Properties()
    props.load(new FileInputStream(projectDir.toString() + '/common.properties'))

    def testsToRunWorking(p) {
    String t = 'MyTest.class'
    println "Tests = $t"
    return t ? t : '**/*Test.class'
    }

    def testsToRunNotWorking(p) {
    String t = getProperty(p, "testng.class.includes")
    println "Tests = $t"
    return t ? t : '**/*Test.class'
    }

    task testCustom(type: Test) {
    outputs.upToDateWhen { false }
    testLogging.showStandardStreams = true

    classpath = configurations.customTest + sourceSets.customTest.output
    include testsToRunNotWorking(props) ///< Does not work!
    // include testsToRunWorking(props) ///< Works!

    useTestNG()
    }

    在调试方面:
  • 即使testCustom任务没有达到我的期望,println也会正确返回我期望的值。
  • 我尝试添加dependsOn任务只是为了打印看起来也正确的testCustom.configure { println $includes }的内容。
  • --info
    Tests = '**/MyTest.class'
    :clean
    :compileCustomTestJava - is not incremental (e.g. outputs have changed, no previous execution, etc.).
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    :processCustomTestResources
    :customTestClasses
    :testCustom NO-SOURCE

  • 问题的核心似乎来自我从属性(property)中读取该值(value)的事实。我在 build.gradle内进行了硬编码,一切正常。如果从属性文件中读取-构建将以 NO-SOURCE语句停止。

    任何的想法?

    谢谢!

    最佳答案

    您在属性文件的值中使用引号。属性文件中赋值符号之后的所有内容均用作值,因此引号保留在字符串中。它们被打印在输出Tests = '**/MyTest.class'中。另一方面,如果您在(Groovy)代码中用引号定义了一个字符串,则它们不包含在字符串中。因此,传递的字符串不同。

    从属性文件中删除引号,然后一切都会正常,因为类文件将与不带引号的字符串匹配。

    关于gradle - Gradle-配置测试包括从属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143217/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com