如何处理 Jbehave Java 中的 Embedder$RunningStoriesFailed

问题描述

我正在 Eclipse 中作为 Maven 项目在 Jbehave 中编写我的第一个故事,并且在尝试将代码作为 JUnit 测试运行时遇到以下错误

org.jbehave.core.embedder.Embedder$RunningStoriesFailed: Failures in running stories: ReportsCount[stories=2,storiesNotAllowed=0,storiesPending=0,scenarios=1,scenariosFailed=1,scenariosNotAllowed=0,scenariosPending=0,stepsFailed=2]
    at org.jbehave.core.embedder.Embedder$ThrowingRunningStoriesFailed.handleFailures(Embedder.java:568)
    at org.jbehave.core.embedder.Embedder.handleFailures(Embedder.java:281)
    at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:268)
    at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:249)
    at org.jbehave.core.embedder.Embedder.runStoriesAsPaths(Embedder.java:223)
    at org.jbehave.core.junit.JUnitStories.run(JUnitStories.java:21)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

我认为问题可能与 pom 文件有关,但我尝试了许多不同版本的 jbehave 内核,但没有帮助。 这是我的跑步者文件

package mapper;

    import java.util.Arrays;
    
    import org.jbehave.core.configuration.MostUsefulConfiguration;
    import org.jbehave.core.io.LoadFromClasspath;
    import org.jbehave.core.junit.JUnitStories;
    import org.jbehave.core.reporters.StoryReporterBuilder;
    import org.jbehave.core.steps.InjectableStepsFactory;
    import org.jbehave.core.steps.InstanceStepsFactory;
    
    import com.opera.core.systems.scope.protos.UmsProtos.Format;
    
    import steps.UiSteps;
    
    public class LoginPage extends JUnitStories {
        
        public LoginPage() {
            super();
            this.configuredEmbedder().candidateSteps().add(new UiSteps());
        }
        @Override
        public org.jbehave.core.configuration.Configuration configuration() {
            return new MostUsefulConfiguration()
                    .useStoryLoader(new LoadFromClasspath(getClass().getClassLoader()))
                    .useStoryReporterBuilder(new StoryReporterBuilder()
                    .withDefaultFormats());
        }
        
        @Override
        public InjectableStepsFactory stepsFactory() {
            return new InstanceStepsFactory(configuration(),new UiSteps());
            
        }
    
        
        @Override
        protected java.util.List<String> storyPaths() {
            return Arrays.asList("LoginPage.story");
        }
    }

这是我的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>SeleniumPageTests</groupId>
    <artifactId>SeleniumPageTests</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <resources>
            <resource>
                <directory>src</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jbehave</groupId>
                <artifactId>jbehave-core</artifactId>
                <version>4.8.1</version>
            </plugin>
            <plugin>
                <groupId>com.jayway.restassured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>2.9.0</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>3.0.7</version>
            </plugin>
            <plugin>
                <groupId>org.jbehave</groupId>
                <artifactId>jbehave-maven-plugin</artifactId>
                <version>4.8.1</version>
                <executions>
                    <execution>
                        <id>run-stories-as-embeddables</id>
                        <phase>integration-test</phase>
                        <configuration>
                        <scope>test</scope>
                            <includes>
                                <include>**/*Test.java</include>
                            </includes>
                            <ignoreFailureInStories>false</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>
    <dependencies>
        <dependency>
            <groupId>org.jbehave</groupId>
            <artifactId>jbehave-core</artifactId>
            <version>4.8.1</version>
        </dependency>
        <dependency>
    <groupId>com.github.valfirst</groupId>
    <artifactId>jbehave-junit-runner</artifactId>
    <version>2.2.1</version>
    </dependency>
        <dependency>
            <groupId>org.jbehave</groupId>
            <artifactId>jbehave-maven-plugin</artifactId>
            <version>4.8.1</version>
        </dependency>
    </dependencies>
</project>

这是故事步骤文件

package steps;

import static org.junit.Assert.assertTrue;

import org.jbehave.core.annotations.BeforeStories;
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
import org.jbehave.core.steps.Steps;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import data_provider.ConfigFileReader;
import selenium_pages.LoginPage;

public class UiSteps extends Steps{
    
    private static LoginPage loginPage;
    private static WebDriver driver;
    private String link;
    
    @BeforeStories
    public void initialize()
    {
        driver = new ChromeDriver();    
        
    }
    
    @Given("a subpage $login of 'http://the-internet.herokuapp.com/'")
    public void openingAPage(String login) {
    
        ConfigFileReader configFileReader = new ConfigFileReader();
        link = configFileReader.getApplicationUrlHerokuApp() + login;
        driver.get(link);
        loginPage = new LoginPage(driver);
        
    }
    
    @When("I pass String $username and String $password and click button Login")
    public void enterUsernamePasswordAndClickButton(String username,String password) throws InterruptedException {
        loginPage.enterLoginAndPassword(username,password);
        loginPage.clickBtnSubmit();
        Thread.sleep(2000);
    }
    
    @Then("I will be redirected to website containing green banner with text 'You logged into a secure area!'")
    public void checkGreenBannerAvailable(){
        assertTrue(loginPage.getFlashSuccess().isdisplayed());
    }
    

}

如果您有任何建议,我将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)