有没有人在这里使用gradle 1.0-milestone-9成功配置了reportng?
我下载了使用Gradle开发的Selenium 2,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发现了类似的问题并在那里添加了评论,但是,还没有跟进。唯一的建议是从依赖项中删除reportng ...我希望有人在这里知道如何使用gradle处理reportng。
在下面添加Szpak建议的代码后:
按照Szpak的建议将代码添加到build.gradle后,我终于可以运行测试了 - 仍然没有reportng监听器但是依赖于它。但是,一旦我插入了监听器,就像:
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的reportng ...
答案 0 :(得分: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”。
答案 1 :(得分: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"
}
}