Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)レベル: 上級
職務内容: プログラマー
Justin Chilton 氏、SAS、JMP シニア アソシエイト テスト エンジニア
SAS、JMP ソフトウェア開発者、Evan McCorkle 氏
JSL を作成して、変更のたびに手動でテストするのにうんざりしたことはありませんか? うっかりアプリケーションの一部を壊してしまったり、壊してしまうことを恐れて必要な変更を行えなかったことはありませんか? 自動テストを使用すると、変更内容にさらに自信を持てるようになります。JSL のテストを自動化するためのツール セットが利用可能になりました。 このフレームワークには、テストとテスト ケースの作成、およびよく知られている Hamcrest アサーション ライブラリの実装が含まれています。 Hamcrest は、JSL の動作について真実であるとわかっていることを主張する柔軟な方法を提供します。 これらのツールはフル機能を備えており、ニーズに合わせてカスタマイズできます。 実際、JMP 開発では、JMP 自体をテストするためにもこれらを使用しています。このプレゼンテーションでは、このフレームワークと、個々の機能から GUI インタラクションの自動化まで、サンプル JSL アプリケーションのテストにおけるその使用法について説明します。
起こるJSLアプリケーション開発Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)こんにちは@ジャスティン・チルトン、ご回答ありがとうございます。 私はあなたが例として書いている解決策をあなたを読む前に見つけていたので、あなたは私が正しい道を進んでいることを私に確認してくれました。 このプロジェクトに戻るので、数日以内に新しい質問が出るかもしれません... 再度ご回答いただきありがとうございます。
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)こんにちは@キャロル、
返信を見ていなかったため、返信が遅れてしまい申し訳ございません。 このシナリオでは、ポップアップ ダイアログの必要性を避けるために、テスト中に渡すことができるオプションの引数を 'openfile' 関数に追加します。
以下は、オプションの引数を渡すことができるスクリプトの更新です。 もう 1 つの方法は、このようなモーダル ダイアログを回避するためにコード内でチェックできる「isTest」のような何らかのフラグを用意することです。
openfile = function ( {path = Empty()},
strPathOpen = If(IsEmpty(path),
PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"}),
path
);
If(strPathOpen != "", Open(strPathOpen), Empty());
);
ut test("Pickfileok", "Open Big Class File", Expr(
dt = openfile("$SAMPLE_DATA/Big Class.jmp");
ut assert that(Expr(dt), ut n col(5), "opened table should have 5 columns");
));Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)非常に単純な例で申し訳ありませんが、 @ジャスティン・チルトン。 問題を単純化してみました。 次のテスト中にファイル選択ウィンドウをクリックしないようにするにはどうすればよいですか?
openfile = function ( {},
strPathOpen = PickFile("Select the Data Set Table","$SAMPLE_DATA",{"JMP DATA TABLE|JMP"});
return(strPathOpen)
);
ut test("Pickfileok", "Open Big Class File", Expr(
ut assert that(Expr(openfile()), "/C:/Program Files/SAS/JMP/15/Samples/Data/Big Class.jmp");
));
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)わかりました、明確に正確にしていただきありがとうございます。 簡単なアプリケーションでテストしてみます。 もしかしたら他にも質問があるかもしれません...
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)@キャロル、既存のマッチャーを使用してテストを作成するだけである限り、クラスを使用する必要はありません。 独自のマッチャーを作成する必要がある場合は、Define Class() と Method() を使用する必要がありますが、ライブラリには大量のものが提供されているため、それ以上は必要ないでしょう。
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)どうもありがとうございます。 @ジャスティン・チルトン。 もちろんアドインを見つけました、ありがとう! 質問としては、UI を備えたアプリケーションで hamcrest テストを使用するには、Define Class( ) と Method( ) の使用が必須であるかどうか疑問に思っています。 私はそのようなスクリプトの方法に慣れていません...
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)こんにちは@キャロル、JMPMan のサンプルはアドイン内にありますが、アクセスしやすいように zip ファイルでアップロードしました。 ご質問がございましたらお知らせください。
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)こんにちは@ジャスティン・チルトン、ハムクレストの発表ありがとうございました。 プレゼンテーションに組み込んだ例、JMPMan アプリケーションと JMPManGuiTests.jsl を共有していただけますか。 スクリプトのロジックを他のアプリケーションに再現するのが簡単になるはずです。 どうもありがとう。 キャロル
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)ありがとう! 会話の内容を理解できましたが、皆さんは正しい方向に進んでいると思います。 何が融合するのか楽しみです!
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)こんにちは@ネイサンクラーク、
ここでは、データ テーブル マッチャーが GitHub 上でどのように機能するかについて議論してきました。 https://github.com/sassoftware/jsl-hamcrest/pull/57
私は思う@vince_fallerすでに何かに取り組んでいるかもしれません。
-ジャスティン
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)ちょうど先日そんなことを考えていたのですが、 @vince_faller 。もう答えは見つかりましたか? Compare Data Tables プラットフォームの使用を検討していましたが、単体テストで使用できる出力が見つかりませんでした。
Re: Hamcrest を使用した JSL のテストの自動化 (2019-EU-45MP-061)データテーブルを比較するためのベストプラクティスはありますか?マッチャーが見つかりません。