Gradle:为TestNG分配`excludeGroups`有什么问题?

时间:2016-09-09 14:21:38

标签: gradle groovy

有一个项目我使用过TestNG&摇篮。
build.gradle文件中的测试部分:

tasks.withType(Test) {
    useTestNG() {
        useDefaultListeners = true
        testLogging.showStandardStreams = true
    }
}

/*
    some code there
*/

task integTest(type: Test) {
    useTestNG() {
        excludeGroups = ['jt-someTest2', 'jt-someTest3'].toSet()
    }
}

对于这种情况,everithing工作正常。但是当我尝试这样的时候:

def allAvailableTestGroups = ['someTest1', 'someTest2', 'someTest3'].toSet()
def testGroup = project.hasProperty("testGroup") ? project.testGroup : 'all'


tasks.withType(Test) {
    useTestNG() {
        useDefaultListeners = true
        testLogging.showStandardStreams = true
    }
}

/*
    ...
    some code there
    ...
*/

task integTest(type: Test) {
    useTestNG() {
        excludeGroups = ( allAvailableTestGroups.collect { "jt-${it}" }.findAll { it != testGroup } ) as HashSet<String>
    }
}

我遇到了这样的麻烦:

  

org.gradle.internal.UncheckedException:   抛出java.lang.ClassNotFoundException:   org.codehaus.groovy.runtime.GStringImpl
          // ...
由以下引起:java.lang.ClassNotFoundException:org.codehaus.groovy.runtime.GStringImpl
          // ...
抛出了意外的异常。
org.gradle.internal.remote.internal.MessageIOException:无法读取   来自'/127.0.0.1:58219'的消息。
          // ...由以下引起:com.esotericsoftware.kryo.KryoException:java.io.IOException:╙фрыхээ√щїюёЄяЁшэєфшЄхы№эюЁрчюЁтры   ёє∙хёЄтє■∙ххяюфъы■ўхэшх
          // ...由以下引起:java.io.IOException:╙фрыхээ√щїюёЄяЁшэєфшЄхы№эюЁрчюЁтрыёє∙хёЄтє■∙ххяюфъы■ўхэшх
          // ...
抛出了意外的异常。
org.gradle.internal.remote.internal.MessageIOException:无法   写'/127.0.0.1:58219'。
          // ...由以下引起:java.io.IOException:╙фрыхээ√щїюёЄяЁшэєфшЄхы№эюЁрчюЁтрыёє∙хёЄтє■∙ххяюфъы■ўхэшх
          // ...:integTest FAILED
FAILURE:构建失败,异常。

怎么了?

1 个答案:

答案 0 :(得分:1)

替换此行:

excludeGroups = ( allAvailableTestGroups.collect { "jt-${it}" }
    .findAll { it != testGroup } ) as HashSet<String>

有了这个:

excludeGroups = ( allAvailableTestGroups.collect { "jt-${it}".toString() }
    .findAll { it != testGroup } ) as Set

看起来Groovy编译器由于某种原因缺少GString "jt-$it"的自动翻译...调用toString()应该解决这个问题。