参照 https://www.dazhuanlan.com/2019/09/04/8c18f8874287/
この記事では、Windows UI自動テストスイートであるTestStack.Whiteを簡単に紹介し、単純な加算器Windowsフォームプログラムで自動WindowsUIテストを実行します。
序文
数ヶ月前にSkillTreeの「自動テストとTDDの実用的な開発」コースに登録し、91人の兄弟の3日間のコースでバプテスマを受けました。ついに、ユニットテスト/ TDD / BDDについて比較的完全に理解しました。最終的に実際に使用できるようになります。、多くの部分はまだ模索と学習を続けていますが、最初にテストするという重要な概念からも多くのことを学びました。過去にリファクタリングするときに常に手と足を結ぶというジレンマを取り除くことに加えて、開発速度と機能品質が向上しました。
クラスでは、ブラザー91がWeb UIテストの導入に多大な労力を費やしましたが、現在の作業環境のため、Windowsフォーム開発を使用するシステムはまだたくさんあります。コース演習では、 SeleniumのWindowsUIテストに似たスイート残念ながら、91人の兄弟が主にWebの自動テストを研究したため、回答が得られませんでした。調査した後、Seleniumとは異なり、TestStack.WhiteのWindowsUI自動テストスイートを見つけました。操作スクリプトを簡単に記録してC#テストプログラムに変換できます。ただし、Windowsフォームの関連コンポーネントに精通していることから、プログラムを直接使用してWindowsフォームのコンポーネントを操作することはそれほど難しくありません。さらに、WhiteにはScreenObjectsと呼ばれるWebテストのようなページオブジェクトパターンスイートもあります。これは、UI操作ロジックを抽象化レイヤーから引き出して、テストロジックと操作ロジック間の結合を減らすことができます。後で勉強するために。見てから共有してください。
TestStack.Whiteについて
TestStack.White(以下、ホワイトと呼びます)は、Windows自体が持つUIオートメーションテストフレームワーク「UIAutomation」をラップし、Windows UIのテストプログラムを作成するのに便利なスイートです。次に、簡単に紹介します。ホワイトを使用
テストするプログラム
まず、加算器プロジェクトを作成し、プログラム出力パスをC:tempに設定し、プログラム名はAddCalculator.exeでした。次のテストプロジェクトでは、テストプログラムで加算器プログラムを自動的に開きます。番号を入力してを押します。計算ボタンをクリックし、生成された結果が正しいことを確認します。
加算器画面
「追加」ボタンの手順
private void btnAdd_Click(object sender, EventArgs e)
{
var result = Convert.ToInt32(txtNum1.Text) + Convert.ToInt32(txtNum2.Text);
lblResult.Text = result.ToString();
}
プログラム画面とプログラムから、結果を検証する場合、テストプロジェクトにはおそらくいくつかのステップがあることがわかります。
- プログラムを最初に実行する必要があります
- 2桁の制御コンポーネントを見つけて、テストする値を入力します
- 「追加」ボタンを見つけて、Clickイベントをトリガーさせます
- 結果のラベルを見つけて、内容が正しいかどうかを確認します
テストプロジェクトを完了する
基本的なプログラムの練習で、テストプロジェクトを直接作成し、NuGetパッケージ管理を介してTestStack.Whiteパッケージを追加できます。
install-package TestStack.White
次に、テストクラスを追加し、次のプログラムを追加します
[TestClass]
public class CalculatorFormUITest
{
private Application application { get; set; }
private Window window { get; set; }
[TestInitialize]
public void TestInitialize()
{
var applicationPath = "C:\temp\AddCalculator.exe";
application = Application.Launch(applicationPath);
window = application.GetWindow("加法器", InitializeOption.NoCache);
}
[TestCleanup]
public void TestCleanup()
{
application.Close();
}
}
アプリケーションとウィンドウの宣言は、開いたアプリケーションとウィンドウのデータを格納するために使用されます。これら2つの変数は、TestInitialize中に取得されます。TestInitializeでは、最初にApplication.Launch()を使用して実行可能ファイルを開き、次にapplication.GetWindow()を使用します。テストするウィンドウのコンテンツを取得します。application.GetWindow()の最初のパラメーターは、ウィンドウのタイトルです。
TestCleanupが行うことは簡単で、ウィンドウを閉じるだけです。
TestInitializeとTestCleanupのコンテンツにより、各テストの開始時にテストするウィンドウを開き、テストの終了後にウィンドウを閉じることができます。次に、新しいテストメソッドを追加して、UI操作と検証結果をシミュレートします。
[TestMethod] public void TestMedthod_Num1_Is_3_And_Num1_Is_5_Then_Result_Is_8() { // Arrange var txtNum1 = window.Get("txtNum1"); txtNum1.Text = "3"; var txtNum2 = window.Get("txtNum2"); txtNum2.Text = "5"; var expected = "8"; // Act var button = window.Get
("btnAdd"); button.Click(); // Assert var lblResult = window.Get("lblResult"); var actual = lblResult.Text; Assert.AreEqual(expected, actual); }
Arrangeでは、window.Get <control class>( "component name")を使用して設定するコンポーネントとコンテンツを取得し、次にwindow.Getメソッドを使用してAct中に押されるボタンを取得します。がButtonと正しいコンポーネント名に変更され、最後にAssertが結果を示すラベルを取得し、結果が期待どおりであるかどうかを確認します。
このテストメソッドを実行すると、次の図のような結果が表示されます。
テストプログラムは、開発されたWindowsフォームを自動的に実行し、対応する制御シミュレーションの動作を見つけて、結果を検証します。
関連するプログラムはここからダウンロードできます:https://github.com/wellwind/WhiteUiTestingSamples/tree/master/Sample01
結論
この記事では、TestStack.Whiteを使用してWindows Fromのテストを自動化し、UI名を直接検索して対応するコンポーネントを見つけ、コンポーネントの動作を自動的に操作して、動作後の結果が正しいかどうかをテストする方法を簡単に紹介します。
単純な加算プログラムを使用して、実際にテストする複雑なUIを表し、テストプロジェクトで対応するコントロールを見つけて、実際の操作動作をシミュレートし、最後に操作結果の正確さを確認します。
Whiteには、UIコンポーネントを検索するための多くの機能があり、Windowsフォームの自動テストを簡単に実行できます。この部分の詳細については、後で説明します。
Whiteに加えて、TestStackはいくつかの便利なテストスイートもリリースしました。たとえば、BDD開発システムを使用する人はTestStack.BDDfyを学習できます。ASP.NETMVCプログラムのテストプログラムを作成する場合は、TestStack.FluentMVCTestingを使用して作成することもできます。テストプログラムはより口語的です。興味がある場合は、TestStackのGitHubで確認できます。