3

関数型言語でUIオートメーションを作成した例や経験はありますか?私は現在、関数型の概念をよりよく理解するためにF#を学習していますが、自動化されたUIテストが関数型言語でどのように構造化されるかを理解するのに苦労しています-Javaで使用するのと同じページ/画面オブジェクトパターンを使用するのは簡単なようですまたはC#ですが、経験が不足しているため、見逃した別のアプローチがあるかどうか知りたいです。

4

2 に答える 2

11

関数型言語を使用することで得られる最大のメリットは、クラスをまったく使用する必要がなく、クラスが適切な場合に使用できることです。また、F# では、型の推論と構文により、きれいな「dsl」のように見えるテスト スイートを使用できます。一般的なアクション (例: ログイン) は簡単に関数に抽象化され、テスト内で呼び出されます。ページに非常に固有の機能は、その定義機能 (css セレクターなど) とともにそのページのモジュールに追加できます。

これはcanopyで書かれたテストの例です

テスト(楽しい_ - >
    // テストの説明
    「ユーザー登録」について説明する

    //ルートに移動
    URL「/」

    //ログインページにいることを確認します
    「/アカウント/ログオン」で

    //登録リンクをクリック
    [フォーム a[href='/アカウント/登録']] をクリックします。

    //リダイレクトされたことを確認する
    「/アカウント/登録」について

    //入力の値を指定されたメールアドレスに設定
    "#Email" << "username@example.com"

    //入力の値を「パスワード」に設定します
    "#パスワード" << "パスワード"

    //入力の値を「PasswordConfirmation」に設定します
    "#PasswordConfirmation" << "パスワード"

    //登録ボタンをクリック
    「input[value='register']」をクリック

    //リダイレクトされたことを確認する
    の上 "/"

    //テスト後にログオフ
    URL「/アカウント/ログオフ」  
)

キャノピーの詳細

私は F# で Web 自動化フレームワーク/ライブラリ (これも Ruby で作成) を作成しましたが、これまでのところ、そのスタイルが機能的であるとは考えていませんが、クラスはありません。ほとんどすべてが関数です。テスト スイートは、実行される関数のリストです。

github ページ
のいくつかの例

LoC が 500 未満の場合、モジュールは 3 つしかありません。ページと対話する主要な機能セット、単純なテスト ランナー、およびいくつかの構成変数です。この時点で、このパラダイムは私にとって非常にうまく機能しています。私にとって、ページ定義は単に私が使用する css セレクターと同じであるため、ページ定義にクラスを使用しません。一連の値を持つモジュールは、このニーズをうまく満たします。

試してみてください。目標を達成するための優れた方法であることがわかると思います。

初めての投稿で申し訳ありませんが、これ以上リンクを表示できません。github を見ると、/canopy/canopy/canopy.fs でソースを確認できます。

于 2012-08-08T23:27:34.760 に答える
0

あなたはあなた自身の質問に答えているようです.F#はOOPをサポートしています.OOPはこの場合に適しています.この場合、命令型と機能型の違いは構造とは異なります.

したがって、C# の場合と同じようにクラスとメソッドを使用しますが、ユニット テスト自体は機能的な方法で記述します。

于 2012-08-08T17:52:35.113 に答える