Невозможно запустить JBehave с Maven

Я следовал одному из учебников JBehave с maven, но, к сожалению, он кажется устаревшим. Поэтому я попытался совместить его с новым туториалом (с официального сайта). После нескольких модификаций история не могла работать так, как раньше.

Однако вот дерево папок моего проекта

├── jbehave-demo.iml
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   │       └── stories
│   │           └── de
│   │               └── codecentric
│   │                   └── jbehave
│   │                       └── stack_scenarios_test.story
│   └── test
│       └── java
│           └── de
│               └── codecentric
│                   └── jbehave
│                       ├── StackScenariosTest.java
│                       └── StackSteps.java

Это мой pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<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/maven-v4_0_0.xsd">

    <url>http://maven.apache.org</url>
    <modelVersion>4.0.0</modelVersion>
    <name>JBehaveDemo</name>
    <groupId>de.codecentric</groupId>
    <artifactId>jbehave-demo</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.jbehave</groupId>
            <artifactId>jbehave-core</artifactId>
            <version>3.9.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.jbehave</groupId>
                <artifactId>jbehave-maven-plugin</artifactId>
                <version>3.9.3</version>
                <executions>
                    <execution>
                        <id>run-stories-as-embeddables</id>
                        <phase>integration-test</phase>
                        <configuration>
                            <includes>
                                <include>**/*Test.java</include>
                            </includes>
                            <ignoreFailureInStories>true</ignoreFailureInStories>
                            <ignoreFailureInView>false</ignoreFailureInView>
                            <systemProperties>
                                <property>
                                    <name>java.awt.headless</name>
                                    <value>true</value>
                                </property>
                            </systemProperties>
                        </configuration>
                        <goals>
                            <goal>run-stories-as-embeddables</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Последний, это мой тестовый класс (для запуска Jbehave)

public abstract class StackScenariosTest extends JUnitStory {

    private final CrossReference xref = new CrossReference();

    public StackScenariosTest() {
        configuredEmbedder().embedderControls().doGenerateViewAfterStories(true).doIgnoreFailureInStories(true)
                .doIgnoreFailureInView(true).useThreads(2).useStoryTimeoutInSecs(60);
    }

    @Override
    public Configuration configuration() {
        Class<? extends Embeddable> embeddableClass = this.getClass();
        Properties viewResources = new Properties();
        viewResources.put("decorateNonHtml", "true");
        ParameterConverters parameterConverters = new ParameterConverters();
        ExamplesTableFactory examplesTableFactory = new ExamplesTableFactory(new LocalizedKeywords(),
                new LoadFromClasspath(embeddableClass), parameterConverters);
        // add custom converters
        parameterConverters.addConverters(new ParameterConverters.DateConverter(new SimpleDateFormat("yyyy-MM-dd")),
                new ParameterConverters.ExamplesTableConverter(examplesTableFactory));


        URL storyURL = null;
        try {
            // This requires you to start Maven from the project directory
            storyURL = new URL("file://" + System.getProperty("user.dir")
                    + "/src/main/resources/stories/");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        return new MostUsefulConfiguration()
                .useStoryControls(new StoryControls().doDryRun(false).doSkipScenariosAfterFailure(false))
                .useStoryLoader(new LoadFromRelativeFile(storyURL))
                .useStoryParser(new RegexStoryParser(examplesTableFactory))
                .useStoryPathResolver(new UnderscoredCamelCaseResolver())
                .useStoryReporterBuilder(
                        new StoryReporterBuilder()
                                .withCodeLocation(CodeLocations.codeLocationFromClass(embeddableClass))
                                .withDefaultFormats().withPathResolver(new FilePrintStreamFactory.ResolveToPackagedName())
                                .withViewResources(viewResources).withFormats(Format.CONSOLE, Format.TXT, Format.HTML, Format.XML)
                                .withFailureTrace(true).withFailureTraceCompression(true).withCrossReference(xref)
                )
                .useParameterConverters(parameterConverters)
                        // use '%' instead of '$' to identify parameters
                .useStepPatternParser(new RegexPrefixCapturingPatternParser("%"))
                .useStepMonitor(xref.getStepMonitor());
    }


    @Override
    public InjectableStepsFactory stepsFactory() {
        return new InstanceStepsFactory(configuration(), new StackSteps());
    }

}

Когда я хотел запустить JBehave из терминала, я выполнил эту команду:

mvn integration-test

Впрочем, это результат (весь результат не ставлю)

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ jbehave-demo ---
[INFO] Surefire report directory: /Users/dev/Desktop/cc_JBehaveSample/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ jbehave-demo ---
[INFO] Building jar: /Users/dev/Desktop/cc_JBehaveSample/target/jbehave-demo-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- jbehave-maven-plugin:3.9.3:run-stories-as-embeddables (run-stories-as-embeddables) @ jbehave-demo ---
[INFO] Running stories as embeddables using embedder Embedder[storyMapper=StoryMapper,storyRunner=StoryRunner,embedderMonitor=MavenEmbedderMonitor,classLoader=EmbedderClassLoader[urls=[/Users/dev/Desktop/cc_JBehaveSample/target/classes/, jbehave-core-3.9.3.jar, hamcrest-core-1.3.jar, hamcrest-library-1.3.jar, hamcrest-integration-1.3.jar, commons-collections-3.2.1.jar, commons-io-2.4.jar, commons-lang-2.6.jar, plexus-utils-3.0.10.jar, freemarker-2.3.19.jar, paranamer-2.4.jar, xstream-1.4.5.jar, xmlpull-1.1.3.1.jar, xpp3_min-1.1.4c.jar, junit-4.4.jar],parent=ClassRealm[plugin>org.jbehave:jbehave-maven-plugin:3.9.3, parent: sun.misc.Launcher$AppClassLoader@2503dbd3]],embedderControls=UnmodifiableEmbedderControls[EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=false,verboseFailures=false,verboseFiltering=false,storyTimeoutInSecs=300,failOnStoryTimeout=false,threads=1]],embedderFailureStrategy=<null>,configuration=org.jbehave.core.configuration.MostUsefulConfiguration@37b57b54,candidateSteps=<null>,stepsFactory=<null>,metaFilters=<null>,systemProperties={java.awt.headless=true},executorService=<null>,executorServiceCreated=false,storyManager=<null>]

У вас есть идеи, почему тест не выполняется? Я не могу найти отчет о выполнении истории на консоли. Спасибо.


person Aldo Suwandi    schedule 05.08.2014    source источник


Ответы (1)


Чего вам не хватает, так это теста в вашей конфигурации.

             <executions>
                <execution>
                    <id>run-stories-as-embeddables</id>
                    <phase>integration-test</phase>
                    <configuration>
                        **<scope>test</scope>**
                        <includes>
                            <include>**/*Test.java</include>
                        </includes>
                        <ignoreFailureInStories>true</ignoreFailureInStories>
                        <ignoreFailureInView>false</ignoreFailureInView>
                        <systemProperties>
                            <property>
                                <name>java.awt.headless</name>
                                <value>true</value>
                            </property>
                        </systemProperties>
                    </configuration>
                    <goals>
                        <goal>run-stories-as-embeddables</goal>
                    </goals>
                </execution>
person Raghuram    schedule 18.08.2014