1

ここで説明されている Capabilities インターフェイスを使用して、Arquillian の Drone 拡張機能を使用して、いくつかの機能テスト用に WebDriver を構成したいと考えています。アーティファクト arquillian-bom (バージョン 1.0.2.Final)、arquillian-drone-bom (バージョン 1.1.0.CR2)、arquillian-drone-webdriver-depchain、arquillian-drone-webdriver を pom の依存関係として追加しました。以下に示すように xml を作成し、示されているように機能を宣言しましたが、テストを実行すると、次の例外がスローされます。

java.lang.NullPointerException
at org.openqa.selenium.remote.DesiredCapabilities.<init>(DesiredCapabilities.java:51)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration$5.invoke(TypedWebDriverConfiguration.java:268)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration$5.invoke(TypedWebDriverConfiguration.java:259)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration$CallInterceptor.intercept(TypedWebDriverConfiguration.java:65)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration.getCapabilities(TypedWebDriverConfiguration.java:274)
at org.jboss.arquillian.drone.webdriver.factory.FirefoxDriverFactory.createInstance(FirefoxDriverFactory.java:79)
at org.jboss.arquillian.drone.webdriver.factory.FirefoxDriverFactory.createInstance(FirefoxDriverFactory.java:42)
at org.jboss.arquillian.drone.webdriver.factory.WebDriverFactory.createInstance(WebDriverFactory.java:129)
at org.jboss.arquillian.drone.webdriver.factory.WebDriverFactory.createInstance(WebDriverFactory.java:43)
at org.jboss.arquillian.drone.impl.DroneCreator.createWebTestBrowser(DroneCreator.java:71)
etc.

コードを見ると、この NPE は、初期化されていない TypedWebDriverConfiguration のクラス変数、capabilityMap によって引き起こされていることがわかります。

これを機能させるには、構成で何を修正する必要がありますか?

pom.xml 抽出:

<project>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>${arquillian.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-bom</artifactId>
            <version>${drone.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-webdriver</artifactId>
            <version>${drone.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-webdriver-depchain</artifactId>
            <version>${drone.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

arquillian.xml:

<arquillian xmlns="http://jboss.org/schema/arquillian"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/schema/arquillian
        http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
    <extension qualifier="webdriver">
        <property name="browserCapabilities">firefox</property>
        <property name="capabilityWebdriverFirefoxBin">/usr/bin/firefox</property>
    </extension>
</arquillian>

コードでの WebDriver 宣言:

@RunWith(Arquillian.class)
public class WebDriverTest {

    @Deployment
    public static WebArchive createDeployment() {
        ...
    }

    @Drone
    WebDriver driver;   

} 
4

1 に答える 1

2

これは、Maven pom.xml の依存関係宣言によって引き起こされるバージョン管理の問題です。Arquillian BOM アーティファクトは、インポート スコープを使用して、dependencyManagement の下で宣言する必要があります。pom.xml の依存関係の宣言は次のようになります。

<project>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-webdriver-depchain</artifactId>
            <version>${drone.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>${arquillian.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.extension</groupId>
                <artifactId>arquillian-drone-bom</artifactId>
                <version>${drone.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>    
        </dependencies>
    </dependencyManagement>
</project>

arquillian-drone-webdriver の依存関係は不要になったことに注意してください。

于 2012-08-20T08:02:16.700 に答える