Automation JUnit reporter没有显示JBehave中每个步骤的详细报告
我正在尝试设置JBehave来测试web服务 模板故事运行良好,但我在JUnit面板中只能看到Acceptance suite类的执行结果。我想要看到的是套件中每个故事和故事中每个步骤的执行结果,就像在简单的JUnit测试或Thucydides框架中显示的那样 这是我的acceptance suite类:所以可能我还没有配置一些东西,或者我必须以其他方式标记我的step方法,但我还没有找到答案Automation JUnit reporter没有显示JBehave中每个步骤的详细报告,automation,report,jbehave,Automation,Report,Jbehave,我正在尝试设置JBehave来测试web服务 模板故事运行良好,但我在JUnit面板中只能看到Acceptance suite类的执行结果。我想要看到的是套件中每个故事和故事中每个步骤的执行结果,就像在简单的JUnit测试或Thucydides框架中显示的那样 这是我的acceptance suite类:所以可能我还没有配置一些东西,或者我必须以其他方式标记我的step方法,但我还没有找到答案 package ***.qa_webservices_testing.jbehave; import
package ***.qa_webservices_testing.jbehave;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import org.jbehave.core.Embeddable;
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.io.CodeLocations;
import org.jbehave.core.io.LoadFromClasspath;
import org.jbehave.core.io.StoryFinder;
import org.jbehave.core.junit.JUnitStories;
import org.jbehave.core.parsers.RegexPrefixCapturingPatternParser;
import org.jbehave.core.reporters.CrossReference;
import org.jbehave.core.reporters.Format;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.steps.InjectableStepsFactory;
import org.jbehave.core.steps.InstanceStepsFactory;
import org.jbehave.core.steps.ParameterConverters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ***.qa_webservices_testing.jbehave.steps.actions.TestAction;
/**
* suite class.
*/
public class AcceptanceTestSuite extends JUnitStories {
private static final String CTC_STORIES_PATTERN = "ctc.stories";
private static final String STORY_BASE = "src/test/resources";
private static final String DEFAULT_STORY_NAME = "stories/**/*.story";
private static final Logger LOGGER = LoggerFactory.getLogger(AcceptanceTestSuite.class);
private final CrossReference xref = new CrossReference();
public AcceptanceTestSuite() {
configuredEmbedder()
.embedderControls()
.doGenerateViewAfterStories(true)
.doIgnoreFailureInStories(false)
.doIgnoreFailureInView(true)
.doVerboseFailures(true)
.useThreads(2)
.useStoryTimeoutInSecs(60);
}
@Override
public Configuration configuration() {
Class<? extends Embeddable> embeddableClass = this.getClass();
Properties viewResources = new Properties();
viewResources.put("decorateNonHtml", "true");
viewResources.put("reports", "ftl/jbehave-reports-with-totals.ftl");
// Start from default ParameterConverters instance
ParameterConverters parameterConverters = new ParameterConverters();
return new MostUsefulConfiguration()
.useStoryLoader(new LoadFromClasspath(embeddableClass))
.useStoryReporterBuilder(new StoryReporterBuilder()
.withCodeLocation(CodeLocations.codeLocationFromClass(embeddableClass))
.withDefaultFormats()
.withViewResources(viewResources)
.withFormats(Format.CONSOLE, Format.TXT, Format.HTML_TEMPLATE, Format.XML_TEMPLATE)
.withFailureTrace(true)
.withFailureTraceCompression(false)
.withMultiThreading(false)
.withCrossReference(xref))
.useParameterConverters(parameterConverters)
// use '%' instead of '$' to identify parameters
.useStepPatternParser(new RegexPrefixCapturingPatternParser(
"%"))
.useStepMonitor(xref.getStepMonitor());
}
@Override
protected List<String> storyPaths() {
String storiesPattern = System.getProperty(CTC_STORIES_PATTERN);
if (storiesPattern == null) {
storiesPattern = DEFAULT_STORY_NAME;
} else {
storiesPattern = "**/" + storiesPattern;
}
LOGGER.info("will search stories by pattern {}", storiesPattern);
List<String> result = new StoryFinder().findPaths(STORY_BASE, Arrays.asList(storiesPattern), Arrays.asList(""));
for (String item : result) {
LOGGER.info("story to be used: {}", item);
}
return result;
}
@Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new TestAction());
}
}
因此,它们仅由JBehave符号表示
Junit面板中返回的结果仅与此处类似(我还没有发布图像的权限):
您应该尝试此开源库:
它完全符合您的要求:)是的,codecentric runner工作得非常好。
我自己找到了问题的解决方案。我需要从jbehave扩展Runner类,然后用@RunWith(ReportingRunner.class)标记我的套件。我想知道插件是否只从IDE执行测试和创建junit报告,或者我也可以由maven运行它?当谈到maven时,假设您想要headless(没有ui)执行&一个可以通过Jenkins等构建服务器显示的报告。因此测试执行有两个工作流:一个用于IDE,这样开发人员可以快速生成测试和功能;另一个用于maven,这样自动测试执行可以从开发团队异步进行。我看到的大多数团队都使用Surefire插件来执行junit/BDD测试。谢谢你的意见,你是对的,我确实想要一个无头处决。。。我也尝试过使用surefire插件,但由于某些原因,它对我不起作用,可能是因为错误的插件设置。我尝试过surefire和failsafe插件,问题是我无法正确配置它们以使用Jbehave插件,例如,设置故事超时。。。有没有可能,您有一个pom文件的示例,其中配置了jbehave插件和surefire?谢谢
Customer customer = new cutomer();
@Given ("I have Access to Server")
public void givenIHaveAccesToServer() {
customer.haveAccesToServer();
}