ステップバイステップ:.Net環境でテストを記述するときにロシア語プロジェクトのSpecFlowを設定する

私はインターネット上で、ロシア仕様で動作するようにSpecFlowを設定する方法に関する段階的なロシア語の指示を見つけませんでした。 また、一般的に、SpecFlowの使用を開始する方法に関するロシアの指示はありません。 しかし、他の自動化業者の間で 、これを簡単かつ簡単に行えるという事実について懐疑的な見方がありましたが、遠い将来に提案された代替案が好きではありませんでした(技術サポートの専門家がWebからテストを表示しました)。 SpecFlowが必要で、ロシア語です!

それにもかかわらず、私はどうにかそれを理解しました、そして、他の人がそれがそれほど難しくないことを疑わないように、そして私自身の隆起を満たさないように、私は私の指示を共有します。 主に自動化されたテスター向けであるため、プログラマーにとって明らかなポイントが含まれている場合があります。

この記事は次の人に役立ちます:

この記事は次のよう人には役に立ちません


問題の声明


私の仕事は、ロシアの企業によって開発されており、主に国内の消費者を対象とする1つのアプリケーションの主要機能のテストを自動化することです。 このアプリケーションは何年も市場に出回っており、そのドキュメントは数百ページで測定されています。 リリースは頻繁に行われ、バグが多く、テスターはほとんどいません。

このマニュアルでは、最新の自動化トレンド- 例による指定を適用して、自動化が最も優先される主要機能を強調し、シンプルで明確なユーザーストーリーの形で説明することを約束しました。

次に何をする? スクリプトを機能ファイルに直接ペイントし、自動テストに固定します!

取扱説明書


必要なもの

  1. .Net用のIDE。 この命令は、英語版Visual Studio 2012用に作成されています。他のIDEでは、類推して行動します。
  2. テストランナーが選択されていない場合は、インストールします。 NUnitを使用します。 SpecFlowは、 他のテスト実行ツールもサポートしています。


ステップ1:SpecFlowをインストールする

[ツール]-[拡張機能と更新プログラム]に移動します。


オンラインでSpecFlowを探します。


拡張機能をインストールします。 インストーラーからスタジオの再起動を求められます。

ステップ2:SpecFlow構成ファイルを作成する

次の場合、この手順をスキップできます。


次の内容で事前にApp.configファイルを準備します。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> </configSections> <specFlow> <!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config --> <unitTestProvider name="NUnit" /> <language feature="ru-RU" tool="ru-RU" /> <bindingCulture name="ru-RU" /> </specFlow> </configuration> 


NUnitの代わりに、ここで別のテストランナーを指定できます。

このファイルは、テストスイートと機能ファイルを含むすべてのプロジェクトに添付する必要があります。そのため、コピーを別途保管することをお勧めします。
私は意図的にコメントのドキュメントへのリンクを残します-突然何か他のものを変更したいです。
構成ファイルはSpecFlowのデフォルト設定を消去するため、NUnitで英語仕様を使用する場合は必要ありません。

ステップ3:プロジェクトを作成する

単体テストのようなプロジェクトを作成します。


プロジェクトツリーから、標準クラスの不要なファイルを削除します。


パッケージマネージャーコンソールを起動します。


その中で、次のコマンドを実行します:
PM> Install-Package SpecFlow.NUnit -ProjectName UnitTestProject1
どこで:
UnitTestProject1はプロジェクトの名前です。
SpecFlow.NUnit-NUnitのSpecFlowバージョン。 SpecFlowのみを記述すれば、テストではNUnitは実行されず、SpecRunが実行されます。 詳細はこちら。



コマンドが完了すると、App.configファイルがプロジェクトフォルダーに表示されます。 ソリューションエクスプローラーには表示されません。

デフォルトの設定を事前に準備したものに置き換える必要があります。 これを行うには2つの方法があります。
1.ファイルシステムでプロジェクトフォルダーを開き、コピーと貼り付けを変更します。
2.プロジェクトツリーにファイルを追加します。


これで、スタジオ自体でコンテンツを編集できます。


構成変更のたびに、SpecFlowはその機能を再度処理する許可を求めます。

ステップ4:機能説明ファイルの追加

SpecFlow機能ファイルをプロジェクトに追加します。


このファイルには英語のサンプルが含まれます。 SpecFlowをロシア語に設定しているため、構文の強調表示は機能しません-プロジェクトは「指定された/ When / Then」を認識しません:


テンプレート自体は変更できます。これはコメントに記述されています。

ロシア語で機能とスクリプトを説明します(ここからコピーできます)。
 :             @ :                       Login        


説明するときは、どの特定のキーワードが英語に従って配置されているかに留意する必要があります。
 <Language code="ru" cultureInfo="ru" defaultSpecificCulture="ru-RU" englishName="Russian"> <Feature></Feature> <Feature></Feature> <Feature></Feature> <Background></Background> <Background></Background> <Scenario></Scenario> <ScenarioOutline> </ScenarioOutline> <Examples></Examples> <Given></Given> <Given></Given> <Given></Given> <When></When> <When></When> <Then></Then> <Then></Then> <And></And> <And>  </And> <But></But> <But></But> </Language> 


ガーキンを信じる人にとって、ロシア語の「Given / When / Then」の式は「If / When / Then」のように聞こえます。論理的。 これを回避して「If」=「Given」を実行しようとすると、ステップの生成時に混乱と混乱が生じます。

これで、構成が成功し、ロシア語のキーワードが認識されることを確認できます。


ステップ5:テストステップの生成

機能ファイル自体で、コンテキストメニューからテストステップジェネレーターを実行します。


すべてが正しく理解されていることをもう一度確認できます。スクリプトでは、すべて「Given」、「And」、「When」、「Then」がありました。


生成-ステップを生成します。
提案どおりに保存するか、名前を変更します。 一般に、テストステップを含むファイルが、テスト対象の関数の名前で機能ファイルと一致する場合に便利です。そのため、最初から機能に正しく名前を付ける方が適切です。

その結果、自動テストコードのスタブを含むステップを生成しました。


ステップ6:テストを実行する

これで、自動テストを作成する前であっても、テストを既に実行して、すべてが正しく機能することを確認できます。
これは、機能ファイル自体のコンテキストメニューから行うのが最も便利です。


テストが未完了として認識され、起動が行われない場合、すべてが正しく構成されます。

スクリーンショットでは、失敗したテストは同じソリューション内の別のプロジェクトからのものです。 NUnitはすべてのテストを一度に実行します。

何かが正しく構成されていない場合、自動テスト入力を書き込む前にテストが失敗します。 最悪のシナリオでは、NUnitはテストがまったくないと判断します。

バンプ


私は単純にApp.Configファイルのキーワードを再定義しようとしましたが、そこに書き過ぎてしまい、テストがクラッシュしました。
Result Message: TestFixtureSetUp failed in < >

この指示を使用しても、まだ「赤」の結果に出くわす場合は、コメントを書いてください。この経験は誰かに役立つかもしれません。

次は?


次に、自動テストをステップに固定し、機能ファイルとスクリプトの範囲を拡大する必要があります。 ロシア語でこれを行う方法は、 marshinovを積極的に説明しています 。 彼の記事では、英語で記述された機能ファイルを使用した例を提供していますが、類推を使用してそれを把握できます。

情報源:


www.specflow.org/specflownew/ProjectSetupGuide.html
go.specflow.org/doc-config
github.com/techtalk/SpecFlow/wiki/Configuration
raw.github.com/techtalk/SpecFlow/master/Languages.xml
msdn.microsoft.com

Source: https://habr.com/ru/post/J182160/


All Articles