2016-11-07 7 views
1

Specflow/SpecrunおよびC#プログラミングの新機能です。私は直面している問題を解決するのに助けが必要です。Specflow/Specrunフィーチャファイルを動的値で実行する方法

データベースを照会する仕様ファイルがあります。以下はフィーチャーファイルのコードです:

Scenario Outline: Ensure all rows are correctly inserted on in the table 
    Given I am connected to "Database-XYZ" 
    When I run a script to ensure all rows are inserted for <tableName> of a <schemaName> 
    Then All tables have correct <columnCount> count. 

これは絶対に問題ありません。しかし、私は2行目をコメントし、実行時にdefault.srprofileファイルを使ってデータベース名を指定したいと思います。

default.srprofileファイルを使用してruntests.cmdファイル(コマンドラインから)を実行し、実行時にデータベース名を入力します。これを達成することは可能ですか?

+1

実行時間はどうですか? srProfileは、テストランンドの先頭で読み込まれます。 または、開発者ごとに異なるため、データベースをどこかに設定するだけですか? –

答えて

0

これが役立つかどうかは不明ですが、app.configを使用することができますか。私は自分のデータベースと環境を設定してから、それをステップから呼び出します。こうすることで、app.configの値を変更するだけで、呼び出しを作成し、テスト環境に応じてデータベースを設定することができます。あなたは以下のようなことをすることができます。

app.config 
<add key="DatabaseTest" value="myDBConnectionString" /> 
<add key="DatabaseDev" value="myDBConnectionString" /> 
<add key="Environment" value="test" /> 

Step: 
using System.Configuration; //make sure you have this included to use ConfigurationManager 

    [Given(@"I am connected to my environment database")] 
    public void GivenIAmConnectedToMyEnvironmentDatabase() 
    { 

    var myEnv = ConfigurationManager.AppSettings["Environment"]; 
    switch (myEnv) 
    { 
     case "test": 
     var _testDatabase = ConfigurationManager.AppSettings["DatabaseTest"]; 
     //create db connection 
     break; 
     case "dev": 
      var _devDatabase = ConfigurationManager.AppSettings["DatabaseDev"]; 
      //create db connection 
      break; 
    } 
    } 
関連する問題