2

**最初: これを行う方法に関するここのすべての投稿を文字通りすべて読みました。Maven 自体からの指示を含め、手紙のすべての指示に従っています。

TestNG を使用して Eclipse Selenium プロジェクトを Maven プロジェクトに変換しました。ファイル名に「Test」という単語が含まれているものをすべて取得するデフォルトモードで実行するのではなく、Maven に Test.XML ファイルからテストを実行させることができません... test.xml を直接実行して、すべてを実行できます動作するので、正しく変換できたと思います。私は既存のフレームワークから変換しているので、すべてをデフォルトの「'test' と呼ばれるものをつかむだけ」で動作するように切り替えるのに必要な労力は法外です。私の Test.XML ファイルを SureFire で使用したいと考えています。

私はMavenを初めて使用するので、正しい用語を使用していないことを許しますが、TESTの「目標」でPOMファイルを「実行」すると、test.xmlファイルが単に無視され、「test」という単語が含まれるすべてが実行されます。名前などを変更してこれを確認しました...ほとんどの場合、Eclipseから実行していますが、コマンドラインを数回試しても同じ結果です。

これが私のPOMです:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>TestSuite</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>TestSuite</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugin</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>src/test/resources/test.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.jexcelapi</groupId>
            <artifactId>jxl</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.35.0</version>
        </dependency>
    </dependencies>
</project>

さらに情報が必要な場合は、修正しますが、私の TestNG ファイルは文字通り 1 つのテスト クラスを呼び出すだけで、testNG テストとして直接実行すると機能します。コードの残りの部分は機能するので、そうではないと思います。多分Eclipseの設定?

4

2 に答える 2

0

ファイル名に「Test」という単語が含まれているものを選択するデフォルトモードで実行する代わりに、Maven に Test.XML ファイルからテストを実行させることができません。

これはおそらく、Maven Surefire プラグインのデフォルトの包含パターンによるものです。

デフォルトでは、Surefire プラグインは、次のワイルドカード パターンを持つすべてのテスト クラスを自動的に含めます。

"**/Test*.java" - すべてのサブディレクトリと、"Test" で始まるすべての Java ファイル名が含まれます。"**/*Test.java" - すべてのサブディレクトリと、"Test" で終わるすべての Java ファイル名が含まれます。"**/*TestCase.java" - すべてのサブディレクトリと、"TestCase" で終わるすべての Java ファイル名が含まれます。

そして、ご存知のように、「スイート XML ファイルの構成は、包含パターンと除外パターンをオーバーライドし、スイート ファイル内のすべてのテストを実行します。」

確かなことは言えませんが、test.xml ファイルの読み取りに問題があり (ファイルが見つからない、解析、エンコードの問題など)、Surefire が包含/除外ポリシーにフォールバックしているようです。

これを証明するために少しテストを行うことができます。「構成」内に「含む」および/または「除外」セクションを追加し、ランダムなクラスを除くすべてのクラスを除外します。そのランダム クラスが実行される場合、「suiteXmlFiles」は単純に無視されます。

これで範囲が狭まると思います。

于 2013-12-07T00:22:21.087 に答える
0

グループ ID が正しくありません。プラグインに s がありません。そのはず<groupId>org.apache.maven.plugins</groupId>

これが原因で何が起こっていると思いますか? maven はデフォルトのテストフェーズ構成にデフォルト設定されており、あなたのものを無視しています。

それが役に立てば幸い。

于 2013-12-09T14:56:54.633 に答える