额外的记录JBehave(Additional logging JBehave)

2019-06-25 15:27发布

该方案是这样的:

我们使用JBehave和硒对系统集成和端到端测试。 我超过20个值的验证检查页面上的计算结果与。 使用JUnit断言整个测试将失败是不正确的值之一的第一个实例。 我想要做的是,如果一个断言失败是满足,那么测试继续执行,这样我可以再整理所有处于一个试运行,而不是多个测试运行不正确的价值观。

要做到这一点,我捕捉到了断言和写出来,希望失败验证日志文件什么。 这给我留下了几个问题:

1)在我写出来的断言日志文件失败不包含JBehave的故事或情景,目前正在运行中的异常发生时的名称。

2)JBehave故事或场景被列为具有“通过”和我希望它被列为“失败”。

有什么办法,我可以登录的故事和场景出了名的附加日志文件或获得写入JBehave日志文件中的额外的记录?

我怎样才能得到标记为失败的故事/情景?

在JBehave配置我有:

configuredEmbedder()
    .embedderControls()
    .doIgnoreFailureInStories(true)
    .doIgnoreFailureInView(false)
    .doVerboseFailures(true)
    .useStoryTimeoutInSecs(appSet.getMaxRunningTime());

.useStoryReporterBuilder(
    new StoryReporterBuilder()
    .withDefaultFormats()
    .withViewResources(viewResources)
    .withFormats(Format.HTML, Format.CONSOLE)
    .withFailureTrace(true)
    .withFailureTraceCompression(true)
    .withRelativeDirectory("jbehave/" + appSet.getApplication())

Answer 1:

是的,你可以创建自己的StoryReporter:

 public class MyStoryReporter implements org.jbehave.core.reporters.StoryReporter{
     private Log log = ...

     @Override
     public void successful(String step) {
        log.info(">>successStep:" + step);
     }

    @Override
    public void failed(String step, Throwable cause) {
        log.error(">>error:" + step + ", reason:" + cause);
    }

     ...
 }

并注册它是这样的:

.useStoryReporterBuilder(
    new StoryReporterBuilder()
         .withReporters(new MyStoryReporter())
..


文章来源: Additional logging JBehave