web-dev-qa-db-ja.com

ユニットテスト実行時のIntelliJエラー:メインクラス$ {surefireArgLine}が見つからないか、ロードできませんでした

IntelliJで単体テストを実行すると、次のエラーが表示されます。エラー:メインクラス$ {surefireArgLine}を見つけることができませんでした。私はmavenを使用しており、pom.xmlで次のことを行っています。

<properties>
    ...
    <surefire.argLine />
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/generated-sources/Java</outputDirectory>
                        <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>

        <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
             <!--Sets the VM argument line used when unit tests are run.-->
            <argLine>${surefire.argLine}</argLine>
        </configuration>
    </plugin>
  <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.1.201405082137</version>
            <executions>
                <!--
                    Prepares the property pointing to the JaCoCo runtime agent which
                    is passed as VM argument when Maven the Surefire plugin is executed.
                -->
                <execution>
                    <id>pre-unit-test</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <!--Sets the path to the file which contains the execution data.-->
                        <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
                        <!--
                            Sets the name of the property containing the settings
                            for JaCoCo runtime agent.
                        -->
                        <propertyName>surefireArgLine</propertyName>
                    </configuration>
                </execution>
   ...

誰もが同様の問題を抱えていましたか? surefireArgLineの値を設定する方法は?

58
BlueLettuce16

IDEから直接ではなくmvn -Dtest = TestCircle testを使用してmavenからテストケースを実行する必要があることがわかりました。

0
BlueLettuce16

私は同じ問題を抱えていたので、 vertx-issue tracker で解決策を見つけたと思います。

要するに、IntelliJ Maven(surefireプラグイン)統合を異なる動作に設定する必要があります。

これを行うには:Preferences -> Build,Execution,Deployment -> Build Tools -> Maven -> Running Tests

argLineのチェックを外します

これはmvn 3.3.9のIntelliJ 14.1.6で動作します

195
jah

Surefire-pluginバージョンを2.10に変更して削除することで、Netbeansでこのエラーを修正できました。

<argLine>-Xmx1024m -XX:MaxPermSize=256m ${argLine}</argLine>

maven-surefire-plugin構成から。代わりに、surefireによって自動的に選択されるargLineプロパティを作成しました。

<properties>
    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
  </properties>

<build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.10</version>
      </plugin>

これで、単一のファイルとテストメソッドを実行およびデバッグできます。また、コードカバレッジは期待どおりに機能しています。

8
tak3shi

Pom.xmlを更新することで問題が解決しました。

<argLine>${surefire.argLine}</argLine>

Pom.xmlの完全なプラグイン情報

    <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>    
            <version>2.18.1</version>                 
            <configuration>
                <parallel>classes</parallel>
                <threadCount>10</threadCount>
                <workingDirectory>${project.build.directory}</workingDirectory>   
                <jvm>${env.JDK1_8_HOME}\bin\Java</jvm>   
                <argLine>${surefire.argLine}</argLine>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.Apache.maven.surefire</groupId>
                    <artifactId>surefire-junit4</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
     </plugin> --> 
1
nandeesh

これを探していて、このプロジェクトがこれで「修正」されていることがわかりました thread

基本的に、空のプロジェクトプロパティとしてjacocoArgLine変数名を定義します。次に、確実な設定では、ドル記号の代わりに@ {jacocoArgLine}を使用します。

0
Jaime Casero