2016-04-01 16 views
4

残念ながら、私はSpecflowテストをローカルに渡していますが、VSO Build vNextサーバーでは失敗し、テスト実行中に冗長な情報を参照する必要があります。行っている。SpecflowとxUnit 2(ITestOutputHelper)を使用したロギング

しかし、私はそう

public SomeSteps(ITestOutputHelper outputHelper)

のように結合SpecflowにITestOutputHelperを注入しようとするのに苦労していますが、Specflowがメッセージ地球上のログを表示するにはどうすればよい

BoDi.ObjectContainerException Interface cannot be resolved: Xunit.Abstractions.ITestOutputHelper (resolution path: ...)

と不平を言いますSpecflowテスト中の出力を表示しますか?

+0

あなたのステップで 'Trace.WriteLine'や' Debug.WriteLine'を使うことはできませんか? –

+0

@Avalanchisが別のコメントで提供したリンクに記載されています。残念ながら、xUnit2はTraceとDebugの出力をキャプチャしません。 ITestOutputHelperを使用する必要があります。 [暴言]私はxUnit.netがますます嫌なことになり始めています。 githubでも、報告されている問題に対処するための寄稿者はほとんどなく、多くのコミットと回答はないようです。 [暴言] – softbear

答えて

1

これは私が思い付く最高のものです。理想的ではありませんが、あなたが望むものを達成します。

生成されたxunitクラスを実装する新しいクラスを作成します。私の例では、生成されたクラスは今YourNormalFeatureClass

public class SpecialTest : YourNormalFeatureClass 
{ 
    private Xunit.Abstractions.ITestOutputHelper helper; 

    public SpecialTest(ITestOutputHelper helper) : base() 
    { 
     this.helper = helper; 
    } 

    public override void ScenarioSetup(ScenarioInfo scenarioInfo) 
    { 
     base.ScenarioSetup(scenarioInfo); 

     // you'd want a better way to keep track of this string 
     TechTalk.SpecFlow.TestRunnerManager.GetTestRunner().ScenarioContext.Set(this.helper, "helper"); 
    } 

} 

と呼ばれ、あなたの手順の中からあなたのxUnit ITestOutputHelperにアクセスすることができますあなたはそれで守勢する必要があると思い

var helper = this._scenarioContext.Get<Xunit.Abstractions.ITestOutputHelper>("helper"); 
helper.WriteLine("output from within the steps file that will be written to xunit!"); 

を経由してファイルをhelperあなたが何も得られないことを確認する変数NullReferenceException

これは、古いテストを継承したので同じテストのコピーが2枚あることに欠点があります。この場合は、SpecialTestYourNormalFeatureClassのテストがあります。つまり、YourNormalFeatureClassテストを実行せずに、SpecialTestテストのみを実行する必要があります。

SpecFlowでコード生成プロセスをカスタマイズすることができれば、これは簡単に解決できます。そうすれば、生成されたコードを介してITestOutputHelperを公開することができます。ステップ内からの消費は同じになります。

+2

8月から待っているプルリクエストがあります。これはまさにこれを行います:https://github.com/techtalk/SpecFlow/pull/689 – Lucero

+0

これはすごい、哀れな彼らはそれを引っ張っていない –

関連する問題