2

这里有人成功配置了 gradle 1.0-milestone-9 的报告吗?

我下载了一个 Selenium 2,使用 Gradle 开发的 TestNG 示例(来自https://github.com/iainrose/page-objects)。它工作得很好(在将系统属性添加到 build.gradle 以切换浏览器之后),现在我想将 ReportNG 添加到组合中。我尝试了以下方法:

dependencies {
compile "org.seleniumhq.selenium:selenium-java:2.15.0"
compile "org.testng:testng:6.3.1"
compile "org.uncommons:reportng:1.1.2"
}

它产生以下错误:

Could not resolve all dependencies for configuration ':compile'.
> Artifact 'org.testng:testng:6.3.1:jdk15@jar' not found.

我在http://issues.gradle.org/browse/GRADLE-2042发现了一个类似的问题,并在那里添加了评论,但是,还没有后续行动。唯一的建议是从依赖项中删除报告...我希望这里有人知道一种让报告与 gradle 一起工作的方法。

添加以下 Szpak 建议的代码后:

在按照 Szpak 的建议将代码添加到 build.gradle 之后,我终于可以运行测试了——仍然没有报告监听器,但存在依赖关系。但是,一旦我插入侦听器,如下所示:

    useTestNG() {
    options {
        listeners << 'org.uncommons.reportng.HTMLReporter'
        listeners << 'org.uncommons.reportng.JUnitXMLReporter'
    }

我得到了 java.lang.StackOverflowError:

A problem occurred evaluating root project 'console-bg1'.
> java.lang.StackOverflowError (no error message)

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'console-bg1'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)

(...)

Caused by: java.lang.StackOverflowError
at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:804)
at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1096)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1049)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128)
at org.gradle.api.tasks.testing.testng.TestNGOptions.methodMissing(TestNGOptions.groovy:204)

从我的在线研究来看,依赖项似乎有问题。我仍然无法将报告与 gradle 一起使用...

4

2 回答 2

0

作为一种解决方法,您可以从 reportng 包中排除 testng-5.0-jdk15 传递依赖项。

dependencies {
    compile "org.seleniumhq.selenium:selenium-java:2.15.0"
    compile "org.testng:testng:6.3.1"
    compile("org.uncommons:reportng:1.1.2") {
        exclude group: "org.testng", module: "testng"
    }
    compile "com.google.inject:guice:3.0"
}

顺便说一句,testCompile 通常是测试依赖项的更好选择。

更新:添加了 guice 依赖项以避免“ClassNotFoundException:com.google.inject.Module”。

于 2012-04-19T23:16:43.223 回答
0

这是有效的代码,包括 Szpak 的贡献:

dependencies {
compile "org.seleniumhq.selenium:selenium-java:2.21.0"
compile "org.testng:testng:6.3.1"
compile group: 'com.google.inject', name: 'guice', version: '3.0'
compile("org.uncommons:reportng:1.1.2") {
    exclude group: "org.testng", module: "testng"
    }
}
于 2012-05-09T20:26:42.950 回答