【问题标题】:Additional logging JBehave附加日志记录 JBehave
【发布时间】:2012-06-21 09:10:04
【问题描述】:

场景是这样的:

我们正在使用 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())

【问题讨论】:

    标签: java logging selenium-webdriver bdd jbehave


    【解决方案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())
    ..
    

    【讨论】:

    • 谢谢。这真的很有用。
    • 您能否添加更多关于我们如何创建记录器的信息。请说明:private Log log = ...
    • 这取决于您使用的日志框架。如果您使用的是 slf4j:Logger log = LoggerFactory.getLogger(MyStoryReporter.class);。主要的一点是它可以是那些回调方法中的任何东西——你可以做一个系统输出、写入数据库或其他任何东西
    • 我收到此错误java: MyStoryReporter is not abstract and does not override abstract method pendingMethods(java.util.List<java.lang.String>) in org.jbehave.core.reporters.StoryReporter。有什么帮助吗?
    • 听起来像是编译问题 - 尝试实现该方法。自从我回答这个问题后,api 可能已经改变了
    猜你喜欢
    • 2016-10-05
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    相关资源
    最近更新 更多