2012-06-21 12 views
7

このシナリオは次のとおりです。追加ログJBehave

システム、統合、エンドツーエンドのテストにJBehaveとSeleniumを使用しています。 私は、検証するために20以上の値を持つページの計算結果を確認しています。 Junit Assertを使用すると、間違っている値の最初のインスタンスでテスト全体が失敗します。私がしたいのは、アサーションの失敗が満たされた場合、テストは実行され続け、複数のテストを実行するのではなく、1回のテストの実行で間違っているすべての値を照合できるということです。

これを行うには、アサーションをキャプチャし、検証に失敗したものをログファイルに書き出します。

1)私がアサーションの失敗を書き出すログファイルには、例外が発生したときに実行されていたJBehave StoryまたはScenarioの名前は含まれていません。

2)JBehave StoryまたはScenarioに「合格」と表示され、「失敗」と表示されます。

StoryとScenarioの名前を追加のログファイルに記録する方法や、追加のログをJBehaveログファイルに書き込む方法がありますか?

ストーリー/シナリオを失敗としてマークするにはどうすればよいですか?

私が持っているJBehaveの構成では:はい、あなたはあなた自身のStoryReporter作成することができます

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

答えて

11

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()) 
.. 
+0

ありがとうございます。それは本当に便利でした。 –

+0

ロガーを作成する方法の詳細を追加できますか? 説明してください:プライベートログログ= ... – farheen

+0

どのログフレームワークを使用しているかによって異なります。 slf4jを使用している場合: 'Logger log = LoggerFactory.getLogger(MyStoryReporter.class);'。主なポイントは、これらのコールバックメソッドの何かになる可能性があることです.SSOUTを実行したり、データベースなどに書き込むことができます。 – plasma147

関連する問題