2016-04-19 4 views
0

私はantとjunitを使っていくつかのBDDスタイルテストにjbehaveを使用しています。 jbehaveを実行しているときにファイルに生成されたあらゆる種類のレポートを無効にしたいのですが、私は現時点でこれらのファイルを使用していません。jbehave:すべてのレポートを無効にする

@RunWith(JUnitReportingRunner.class) 
public abstract class StepsRunner extends JUnitStories { 

    private Configuration configuration; 

    public StepsRunner() { 
     super(); 
     configuration = new MostUsefulConfiguration(); 
     EmbedderControls embedderControls = configuredEmbedder() 
       .embedderControls(); 
     embedderControls.doGenerateViewAfterStories(false); 
    } 

    // ... 
} 

これで、jbehaveレポートビューが生成されないようにすることができます。しかし、私はまだ$PWD/target/jbehave/storyDurations.propsで生成された1つのファイルを取得します。

jbehaveがこれを含むファイルを生成しないようにすることはできますか?それが不可能な場合、jbehaveを設定して、これらのファイルが$PWD/targetに作成されないようにする方法がありますか?

私のantファイルは、<junit/>タスクを使用して標準junitテストのようにjbehaveテストを実行しています(ビルドファイルの簡略化されたバージョンを含めることはできますが、ここでは何も起こりません)。

答えて

0

私の現在の解決策(別の/より良い解決策はまだ歓迎!)で私自身の質問に答える。

jbehaveのソースコードを見ると、$PWD/target/jbehave/storyDurations.propsという有罪ファイルがStoryManagerで書かれています。それはconfiguration.storyReporterBuilder().outputDirectory()によって返された場所を使用しています。

protected void writeStoryDurations(Collection<RunningStory> runningStories) { 
    // collect story durations and cancel any outstanding execution which is 
    // not done before returning 
    [...] 
    write(storyDurations, "storyDurations.props"); 
} 

private void write(Properties p, String name) { 
    File outputDirectory = configuration.storyReporterBuilder() 
      .outputDirectory(); 
    try { 
     outputDirectory.mkdirs(); 
     Writer output = new FileWriter(new File(outputDirectory, name)); 
     p.store(output, this.getClass().getName()); 
     output.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

したがって、それはこのように、コンフィギュレーションにカスタムStoryReporterBuilderを提供することにより、別のパスに生成することが私たちのレポート/出力ファイルを強制することができます:

public StepsRunner() { 
    super(); 
    configuration = new MostUsefulConfiguration(); 
    final File outputDir = new File(System.getProperty("jbehave.output.dir")); 
    configuration.useStoryReporterBuilder(new StoryReporterBuilder() { 
     @Override 
     public File outputDirectory() 
     { 
      return outputDir; 
     } 
    }); 
} 

すべてのjbehave出力ファイルは、jbehave.output.dirシステムプロパティが指すフォルダ内に書き込まれます。それ以降

上、それはアリターゲットにjbehave.output.dirシステムプロパティを設定することで、JUnitのためにアリからjbehave出力ディレクトリの場所の実際の値を渡すために十分に簡単です:

<junit> 
    <sysproperty key="jbehave.output.dir" value="/tmp/jbehave/output/" /> 
    <batchtest> 
    ... 
    </batchtest> 
</junit> 
関連する問題