2012-02-23 9 views
4

SpecFlowを使用して長時間実行される複数のエンドツーエンド統合テストを作成しましたが、Nunitタイムアウトのため失敗しています。SpecFlowからNunit TimeoutAttributeを設定してください

TestFixtureに[Timeout(x)]属性を追加すると問題は解決しますが、機能が更新されるたびに上書きされます。

SpecFlowが尊重する方法でタイムアウトを削除または延長するにはどうすればよいですか?

答えて

1

私はSpecflowを理解することになりますが、これを行うカスタムタグを実装できますか? BeforeScenarioフックまたはBeforeFeatureフックにこれらを配置することはできますか?

+0

私は正直に言うと、知らない、そして実際に変更された雇用主を持つ年以上のためにSpecFlowを使用していません。新しい人はちょうどそれを持って来ているので、私はすぐにそれを試してみるかもしれません。 – mavnn

+0

[BeforeScenario( "TagName]) – AndyM

1

実行時間はどのくらいですか? > 1分? 完全統合テストでなければなりませんか?

私はキュウリの本を読んでいました。物事を実行するのにかかる時間を短縮するために、あなたのGIVENのステップを可能な限りチートすることを提案しました。 GIVENのステップは過去を記述しています。

5つのセクションがあり、すべてのセクションが完了した後にのみ提出できる申請書があります。私はアプリケーションの提出時に発生するいくつかの機能をテストしたかったのですが、もともと私のGIVENステートメントは、フォームの5つのセクションすべてを完成させるためにWebページをSeleniumで駆動していました。すべてのセクションのステータスが完了しました。これは、ランタイムから約1分で切り詰められました。

私がテストしていたことは、提出行動であり、セクションテストの記入は他の場所で行われました。 @DisscCoderが言うように

+0

あなたはポイントを作っていますが、この特定のケースでは、私はSpecFlowをエンドツーエンドのテストの簡単な方法として少し悪用していました。 – mavnn

+0

@mavnn、私は「良い」を意味するときに「could」を書いた唯一の人だと思っていましたが、これは私がそれだけではないことを初めて見たことです。 – Holf

+1

@Holf - いいえ、私はこれをいつもやっています;私はこれを音声のタイピングと呼んでいます。私はそれを私と同じように言います。手で書いていることはほとんどありません:)別のものと似ている単語はフェアなゲームで、最悪の点はスペルチェッカーが助けにならないことです! – mavnn

2

、 はフィーチャーファイルでシナリオにタグカテゴリを追加し、フックのクラスに一致するフックを追加します.... SpecFlowは、すべてのシナリオの前にシナリオコードフックコードを実行します文字列が一致します。

namespace ClassLibrary1 
{ 
    [Binding] 
    public class Hooks1 
    {    
     [BeforeScenario("LongTest")] 
     public void BeforeScenario() 
     { 
      // Code to set Nunit timeout 
     }       
    } 
} 

ガーキン:

@LongTest 
Scenario: Calc Pi to 1m digits (long) 
    Given I am computing PI 
    And my precision is 1 million digits 
    Then my result is 3.14... 
+0

'' nunit timeout'を設定するコードは何ですか? –

関連する問題