2011-12-30 11 views
4

私たちはを実行するためにmavenで作成されたプロファイルを持っています.Selenium junit4タイプテスト以下は実行タグなしのスニペットです。JUnit 4テストをFailSafe&SureFireプラグインと並行して実行

<profile> 
    <id>selenium-tests</id> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.11</version> 
       <dependencies> 
        <!-- Force using the latest JUnit 47 provider --> 
        <dependency> 
         <groupId>org.apache.maven.surefire</groupId> 
         <artifactId>surefire-junit47</artifactId> 
         <version>2.11</version> 
        </dependency> 
       </dependencies> 
       <configuration> 
        <parallel>classes</parallel> 
        <threadCount>5</threadCount> 
        <forkMode>pertest</forkMode> 
        <useManifestOnlyJar>false</useManifestOnlyJar> 
        <redirectTestOutputToFile>true</redirectTestOutputToFile> 
        <skip>false</skip> 
        <includes> 
         <include>**/regtests/*.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

私のTestClassはこのように見えます。

@RunWith(HTMLSourceDumperJUnit4Runner.class) //Our own Runner 
public class MyTestClass extends Assert { 

    private int x = 1; 
    private int y = 1; 

    @Test 
    public void testAddition() { 
     int z = x + y; 
     assertEquals(2, z); 
    } 

} 

私はそれが次のエラーで失敗した並列構成でフェイルセーフプラグイン2.11でこのTestClassを実行します。

 
java.lang.Exception: No runnable methods 
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:171) 
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:115) 
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:269) 
    at org.junit.runners.ParentRunner.(ParentRunner.java:66) 
    at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:59) 
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
    at org.junit.runner.Computer.getRunner(Computer.java:38) 
    at org.apache.maven.surefire.junitcore.ConfigurableParallelComputer.getRunner(ConfigurableParallelComputer.java:142) 
    at org.junit.runner.Computer$1.runnerForClass(Computer.java:29) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:93) 
    at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84) 
    at org.junit.runners.Suite.(Suite.java:79) 
    at org.junit.runner.Computer.getSuite(Computer.java:26) 
    at org.apache.maven.surefire.junitcore.ConfigurableParallelComputer.getSuite(ConfigurableParallelComputer.java:134) 
    at org.junit.runner.Request.classes(Request.java:69) 
    at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:53) 
    at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:140) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:188) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:166) 
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86) 
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:101) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74) 

ここには何か不足しているものがありますか?この投稿の情報が遅れている場合は、返信してください。

+1

あなたもバージョンをミキシングしています。 surefire-junit47の依存関係はフェールセーフ版に従うべきです。 2.11の代わりに2.8 – krosenvold

+0

ありがとう..私はこれを試して、同じエラーを表示します。私は最新の試みで質問を更新しました.. – raksja

+0

2.10から2.11への2.11のアップグレードは、私があなたのようなエラーを持っているすべての単体テストを壊します。すべてのテストは2.10以前で正常に動作する有効なJUnit 4タイプのテストです。私はそれを把握しようとしているカップル時間を過ごした、確実に2.12まで待つ時間。私が似ているのは、forkMode、useManifestOnlyJar、redirectOutputToFileの設定です。おそらく、それらの一部またはすべてに対して異なる設定を試みるでしょうか? –

答えて

2

確実な2.11のバグがあるように見えます。それは機能したくないです。

<useManifestOnlyJar>false</useManifestOnlyJar> 

私はバグを提出しました。 http://jira.codehaus.org/browse/SUREFIRE-819

+0

をtrueに設定すると機能しました。それは良いキャッチだよ。スコットに感謝します。 – raksja

4

プラグインのmavenドキュメント、具体的には<includes>タグに従ってください。テストクラス名のパターンは、**/IT*.java,**/*IT.java、および**/*ITCase.javaです。クラスの名前をMyITまたはMyITCaseなどに変更したいと思うでしょう。

http://maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html#includes

+0

お返事ありがとうございます。私は逃しました。私はそれを試みたが、私は同じエラーが発生している。私は最新の試みで質問を更新しました.. – raksja

+0

@techastuteスタックトレースは確かに確実なパッケージを持っています、フェールセーフではないので問題はおそらくあります。フェイルセーフ構成に含まれているテストを除外するか、または確実に確実に無効にしてください。 – sblundy

関連する問題