2017-02-06 4 views
1

ステップ定義からステップを呼び出そうとしていますが、そのときにSpecFlowExceptionが返されます。次の例でステップ定義から呼び出しているステップがTechTalk.SpecFlow.SpecFlowExceptionをスローします:ステップクラスのコンテナが初期化されていません

ルック:

[Binding] 
public class MySteps: Steps 
{ 
    [Given("Doing some actions, getting (.*) and (.*)")] 
    public void DoingSomeActionsGettingValueAndOtherValue(int a, int b) 
    { 
     Given($"I pass first integer {a} and second integer {b}"); 
    } 

    [Given(@"I pass first integer (.*) and second integer (.*)")] 
    public void ThenIPassFirstIntegerValueAndSecondIntegerValue(int a, int b) 
    { 
     AreEqual(a, b); 
    } 
} 

例外は以下の通りです:

-> error: Container of the steps class has not been initialized! 
TechTalk.SpecFlow.SpecFlowException: Container of the steps class has not been initialized! 
    at TechTalk.SpecFlow.Steps.AssertInitialized() 
    at TechTalk.SpecFlow.Steps.get_TestRunner() 
    at TechTalk.SpecFlow.Steps.Given(String step) 

私は、この特定のエラーを取得していますなぜ誰かが説明できて、私はそれをどのように修正するのですか?私はドキュメンテーションについて多くの助けを見つけることができませんでした。

答えて

0

新しいプロジェクトでエラーを再現しようとしましたが、成功しました。

マイspecflowクラスはあなたからコピーされます。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using NUnit.Framework; 
using TechTalk.SpecFlow; 

namespace ClassLibrary3 
{ 
    [Binding] 
    public class MySteps : Steps 
    { 
     [Given("Doing some actions, getting (.*) and (.*)")] 
     public void DoingSomeActionsGettingValueAndOtherValue(int a, int b) 
     { 
      Given($"I pass first integer {a} and second integer {b}"); 
     } 

     [Given(@"I pass first integer (.*) and second integer (.*)")] 
     public void ThenIPassFirstIntegerValueAndSecondIntegerValue(int a, int b) 
     { 
      Assert.AreEqual(a, b); 
     } 
    } 
} 

そして、これが機能ファイルです:私のアドバイスは、新しいプロジェクトでも同様にエラーを再現しようとすることです

Feature: SpecFlowFeature1 
    In order to avoid silly mistakes 
    As a math idiot 
    I want to be told the sum of two numbers 

@mytag 
Scenario: Add two numbers 
    Given Doing some actions, getting 1 and 1 

、およびそれが成功すると、質問に投稿していないコードにバグが隠れているはずです。

関連する問題