java - 更新后 TestNG 未能通过大多数测试

标签 java maven selenium gradle testng

我看过其他 channel ,但我没有太多运气得到我的问题的答案。

我正在开发一个测试代码库,该代码库最初是使用 TestNG 5.14.10 编写的,并已在我的 build.gradle 文件中将其更新为 6.8.7(我正在使用 Gradle + Maven对于依赖项)。

我的构建文件如下(包括 TestNG 的新版本):

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.seleniumhq.selenium:selenium-java:2.38.0"
    compile "org.testng:testng:6.8.7"
    testCompile('org.uncommons:reportng:1.1.2') {
        exclude group: 'org.testng'
    }
    testCompile "junit:junit:4.8.2"
    compile "com.jayway.restassured:rest-assured:1.8.1"
}

//initialize thread count variable for parallel testing and default to 1
def threadCount = System.getProperty("MAXTHREADS", "1")

tasks.withType(Test) {
    maxParallelForks = 1
    forkEvery = 1000
    ignoreFailures = false

    // Pass all system properties to the tests
    systemProperties = System.getProperties()

    // Makes the standard streams (err and out) visible at console when running tests
    testLogging.showStandardStreams = true

    exclude '**/tasks/'

    classpath += configurations.testCompile
}

task firefox(type: Test) {
    maxParallelForks = Integer.valueOf(threadCount) //default is 1 if not specified
    testLogging.events "started"
    testLogging {
        events "started", "passed", "skipped", "failed", "standardOut", "standardError"
        exceptionFormat "full" // default is "short"
    }
    useTestNG() {
        excludeGroups 'chrome', 'broken'
        useDefaultListeners = false
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }

    testResultsDir = file("${buildDir}/test-results/firefox")
    testReportDir = file("${reporting.baseDir}/firefox")

    systemProperties.BROWSER = System.getProperty('BROWSER', 'firefox')

    exclude '**/selenium/'
    exclude '**/setupscripts/'
}

task chrome(type: Test) {
    maxParallelForks = Integer.valueOf(threadCount) //default is 1 if not specified
    testLogging {
        events "started", "passed", "skipped", "failed", "standardOut", "standardError"
        exceptionFormat "full"
    }
    useTestNG() {
        excludeGroups 'broken'
        useDefaultListeners = false;
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }

    testResultsDir = file("${buildDir}/test-results/chrome")
    testReportDir = file("${reporting.baseDir}/chrome")

    systemProperties.BROWSER = System.getProperty('BROWSER', 'chrome')

    exclude '**/selenium/'
    exclude '**/setupscripts/'
}

task internetExplorer(type: Test) {
    useTestNG() {
        excludeGroups 'chrome', 'broken'
        useDefaultListeners = false;
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }
    testReportDir = file("${reporting.baseDir}/internetExplorer")
    testResultsDir = file("${buildDir}/test-results/internetExplorer")

    systemProperties.BROWSER = System.getProperty('BROWSER', 'internetExplorer')

    exclude '**/selenium/'
    exclude '**/setupscripts/'
}

task applylicense(type: Test) {
    useTestNG() {
        useDefaultListeners = false;
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }

    testResultsDir = file("${buildDir}/test-results/applyLicense")
    testReportDir = file("${reporting.baseDir}/applyLicense")

    scanForTestClasses = false
    include '**/setupscripts/ApplyLicense.class'
}

task uatsetup(type: Test) {
    useTestNG() {
        useDefaultListeners = false;
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }

    testResultsDir = file("${buildDir}/test-results/uatSetup")
    testReportDir = file("${reporting.baseDir}/uatSetup")

    scanForTestClasses = false
    include '**/setupscripts/UatSetup.class'
}

task restsetup(type: Test) {
    useTestNG() {
        useDefaultListeners = false;
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }

    testResultsDir = file("${buildDir}/test-results/restSetup")
    testReportDir = file("${reporting.baseDir}/restSetup")

    scanForTestClasses = false
    include '**/setupscripts/RestSetup.class'
}

task soapsetup(type: Test) {
    useTestNG() {
        useDefaultListeners = false;
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
        listeners << 'com.xmatters.testng.Listener'
    }

    testResultsDir = file("${buildDir}/test-results/soapSetup")
    testReportDir = file("${reporting.baseDir}/soapSetup")

    scanForTestClasses = false
    include '**/setupscripts/SoapSetup.class'
}

task selenium(type: Test) {
    testResultsDir = file("${buildDir}/test-results/selenium")
    testReportDir = file("${reporting.baseDir}/selenium")

    include '**/selenium/'
    exclude '**/webdriver/'
    exclude '**/*$*', '**/Abstract*'
    exclude '**/messagepanel/'
    exclude '**/propertylibrary/'
}

javadoc() {
    title = "xMod Page Objects API"
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.7'
}

我使用 --debug 和 --stacktrace 参数为一个任务运行了一个构建(包含两个带有注释和像标准测试一样对待的设置脚本)。看起来测试被设置为通过,然后失败。非常奇怪的行为。看来这是某种向后兼容性问题。我通常在大约 500 个测试套件中运行它,不会出现任何问题,唯一的变化是我的 TestNG bersion。这是我的 shell 命令和结果输出(我将其修剪为我认为相关的行,因为 Debug模式非常冗长):

./gradlew uatsetup -DREMOTE_DRIVER=false -DWEB_SERVER=10.3.1.226:8888 --stacktrace --debug

由于大小,必须使用 PasteBin 进行调试输出:http://pastebin.com/wsczwgT9

任何帮助都会很棒。

干杯,

Darwin

最佳答案

我不熟悉 Gradle,但在 Maven 设置中,当没有 Maven 依赖项下载到我的工作站时(类似于“mvn clean”),我通常会看到 java.lang.ClassNotFoundException。

运行“mvn install”可以为我完成这项工作。

只需确保您的 PC 上有必要的库、JAR 等即可。

关于java - 更新后 TestNG 未能通过大多数测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579188/

相关文章:

java - Android Fragment 可以覆盖 PhoneGap Activity 吗?

java - 通过提示用户输入垂直显示文本字符串

java - 3gp 到 wav 文件 Android

python - Selenium webdriver 功能未显示在 pycharm 自动建议列表中

java - Selenium,确保选中所有复选框

java - 使用 SSLEngine 在 NIO SSL 握手过程中抛出异常

maven - 线路和分支覆盖范围之间的差异

maven - 通过cmd提取hadoop文件时无法运行sh文件

java - Maven 执行目标失败

php - 使用来自同一行的 id 单击带有 XPath 的按钮