7

场景是这样的:

我们使用 JBehave 和 Selenium 进行系统、集成和端到端测试。我正在检查超过 20 个值的页面上的计算结果以进行验证。使用 Junit Assert,整个测试将在其中一个值不正确的第一个实例上失败。我想做的是,如果遇到断言失败,那么测试将继续执行,这样我就可以在一次测试运行而不是多次测试运行中整理所有不正确的值。

为此,我捕获断言并将验证失败的任何内容写入日志文件。这给我留下了几个问题:

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())
4

1 回答 1

11

是的,您可以创建自己的 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())
..
于 2012-08-19T18:29:40.210 回答