问题描述
我正在 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 (将#修改为@)