【问题标题】:Running an arquillian test (Using gradle project) on saucelabs在 saucelabs 上运行 arquillian 测试(使用 gradle 项目)
【发布时间】:2026-01-08 17:30:01
【问题描述】:

我正在尝试在酱汁实验室进行我的 arquillian 测试。在我们的项目中,我们使用 build.gradle 而不是 Pom.xml。我试着关注这个link

由于我们不使用 pom.xml,所以我尝试将这些依赖添加到 build.gradle

在 build.gradle 文件中:

repositories {
.
.
maven { url 'https://repository-saucelabs.forge.cloudbees.com/release' }
}

dependencies {
.
.
// Libraries needed for Remote Weblogic Testing
.
.
testRuntime "com.saucelabs:arquillian-sauce-drone:0.0.4"
}


**in arquillian.xml:**
<extension qualifier="sauce-webdriver">
        <property name="userName">swxxxxxxx</property>
        <property name="accessKey">63xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</property>
        <property name="browser">firefox</property>     
        <property name="os">Windows 2008</property>
        <property name="version">4.</property>
</extension>

有人可以在这里阐明如何在 saulabs(gradle 项目)上运行 arquillian 测试

java.lang.NoClassDefFoundError: org/jboss/arquillian/drone/webdriver/configuration/TypedWebDriverConfiguration
at com.saucelabs.drone.webdriver.SauceWebDriverFactory.createConfiguration(SauceWebDriverFactory.java:55)
at com.saucelabs.drone.webdriver.SauceWebDriverFactory.createConfiguration(SauceWebDriverFactory.java:33)
at org.jboss.arquillian.drone.impl.DroneConfigurator.configureDrone(DroneConfigurator.java:172)
at org.jboss.arquillian.drone.impl.DroneConfigurator.prepareDroneConfiguration(DroneConfigurator.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

我收到以下错误。

【问题讨论】:

  • 添加maven依赖。然后它会工作。
  • @Junaid,谢谢。我已将“testRuntime”com.saucelabs:arquillian-sauce-drone:0.0.4“”添加到依赖项中。有错吗?
  • 好吧,我之前使用过 arquillian,有和没有 maven 依赖项。但是,对我来说,arquillian 总是使用 maven 依赖项运行。它很愚蠢,但我想不出其他出路。这是链接*.com/questions/13001371/…
  • 这里在黑暗中拍摄,但您指定依赖关系的方式重要吗?基于gradle documentation,您可以尝试testRuntime group: 'com.saucelabs', name: 'arquillian-sauce-drone', version: '0.0.4'
  • @shri046,没有任何区别。不过感谢您提供的信息。

标签: jboss-arquillian saucelabs


【解决方案1】:

这可能是传递依赖的问题。如果你看arquillian-sauce-drone-0.0.4.pom项目依赖

<dependency>
    <groupId>org.jboss.arquillian.extension</groupId>
    <artifactId>arquillian-drone-webdriver</artifactId>
    <version>${version.arquillian.drone}</version>
</dependency>

查看drone webdriver jar 它包含您看到的每个异常缺少的类。这可能只是可能缺少的必需依赖项之一。为此,您可以尝试通过 gradle 查找传递依赖管理,以查看它是否在您的项目中按预期设置/工作。

基于此SO post,您可以为依赖项添加传递属性。尽管我对这些工具中的任何一个都没有经验,但除了 maven 和 Sauce 之外,我可能会大失所望。

来自 SO 帖子的片段

compile ('com.somepackage:LIBRARY_NAME:1.0.0@aar'){
    transitive=true
}

【讨论】:

  • 谢谢。正在努力。会让你们知道它何时以及如何运作。