7

シナリオは次のとおりです。

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

これを行うために、アサーションをキャプチャし、検証に失敗したものをログファイルに書き込みます。これは私にいくつかの問題を残しました:

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 に答える