4

Selenium junit4タイプのテストを実行するためにMavenで作成されたプロファイルがあります。以下は、executionsタグのないスニペットです。

<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を介してこのテストクラスを実行すると、次のエラーで失敗します。

java.lang.Exception:実行可能なメソッドはありません
    org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:171)で
    org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:115)で
    org.junit.runners.ParentRunner.validate(ParentRunner.java:269)で
    org.junit.runners.ParentRunner。(ParentRunner.java:66)で
    org.junit.runners.BlockJUnit4ClassRunner。(BlockJUnit4ClassRunner.java:59)で
    org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:13)で
    org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)で
    org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)で
    org.junit.runner.Computer.getRunner(Computer.java:38)で
    org.apache.maven.surefire.junitcore.ConfigurableParallelComputer.getRunner(ConfigurableParallelComputer.java:142)で
    org.junit.runner.Computer $ 1.runnerForClass(Computer.java:29)で
    org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)で
    org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:93)で
    org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)で
    org.junit.runners.Suite。(Suite.java:79)で
    org.junit.runner.Computer.getSuite(Computer.java:26)で
    org.apache.maven.surefire.junitcore.ConfigurableParallelComputer.getSuite(ConfigurableParallelComputer.java:134)で
    org.junit.runner.Request.classes(Request.java:69)で
    org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:53)で
    org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:140)で
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)で
    java.lang.reflect.Method.invoke(Method.java:597)で
    org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:188)で
    org.apache.maven.surefire.booter.ProviderFactory $ ProviderProxy.invoke(ProviderFactory.java:166)で
    org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)で
    org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:101)で
    org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)で

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

4

2 に答える 2

4

プラグイン、特に<includes>タグのMavenドキュメントによると。テストクラス名のパターンは、、、**/IT*.javaおよび**/*IT.javaです**/*ITCase.java。したがって、クラスの名前をMyITまたはMyITCaseまたはそのようなものに変更する必要があります。

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

于 2012-01-13T01:22:51.737 に答える
2

surefire2.11にバグがあるようです。それはで機能するのが好きではありません

<useManifestOnlyJar>false</useManifestOnlyJar>

バグを報告しました。 http://jira.codehaus.org/browse/SUREFIRE-819

于 2012-01-17T04:31:27.577 に答える