テスト目的でPerl 6とのテキストターミナルインターフェイスを公開するコマンドラインプログラムとのやりとりを自動化するにはどうすればよいですか?Perl 6:ターミナルベースのプログラムの自動テスト
答えて
コンソールアプリケーションの実行またはテストを自動化するためにPerl 6を使用する場合は、NativeCallを使用してexpectライブラリとやりとりすることにします。 expectがインストールされると、man libexpect
にはAPIドキュメントが表示されますが、ドキュメントへのアクセス方法(マンページ名など)はパッケージの配布ごとに異なる場合があります。
Expectにはプログラムを起動し、(エミュレートされた)コンソールにテキストが表示されるのを待って(テキストを期待して)、コンソールにテキストを送信する(入力をエミュレートする)APIがあります。最も一般的な使用例は、パスワード入力が必要なプログラムを自動化することです。 Expectはしばしばスクリプト化されています - それは通訳ですが、より高いレベルのプログラミング言語からそれを使用しない理由はありません。
編集:私は多少間違った質問に答えました。 OPは、Perl 6モジュールをPerl 6でテストすることに興味があります。つまり、このモジュールを使用する2番目のPerl 6インタプリタを起動することを期待しても、アプリケーションをテストする最も強力な、最も厳しい方法です。 expectがほとんどすべてと互換性があるので、モジュールが使用するターミナルライブラリの種類を知る必要はありません。サブプロセスのSTDINパイプにテキストを送ることができますが、これは期待どおりのサブプロセス(コンソール)通信ほど強力ではありません。モジュールが使用している端末ライブラリをハイジャックして、それを直接通信する方法があるかどうかはわかりません。
@raiphこれは主に、コンソールアプリケーションを駆動するための自動化ツールです。しかし、それをそのまま使用したいのであれば、テストのために役立つはずです。 – piojo
単純なインターフェイスの場合は、run
プログラムを実行して出力を収集することができます。現在実験中のTesto
moduleにはis-run
のルーチンがあります。それを直接使うこともできますし、実験的な状況が気になる場合は、guts of itを独自のヘルパールーチンにコピーしてください。
- 1. Cronの自動化perlプログラムが動作しない?
- 2. iOS 6状態の保存と復元の自動テスト
- 3. 展開自己は、Perl 6スクリプト
- 4. perlの自動ウイルス化
- 5. どのようにしてPerl 6ファイルハンドラを自動フラッシュできますか?
- 6. Windevの自動テスト
- 7. セグの自動テスト
- 8. 自動テストのDocker
- 9. WordPressの自動テスト
- 10. DialogFlowの自動テスト
- 11. Tableauの自動テスト
- 12. コードの自動テスト
- 13. ExtJS 6 - 自動フィッティンググリッド列ヘッダーテキスト
- 14. ロボットファイル自動テスト
- 15. JavaScript自動テスト
- 16. InDesign自動テスト
- 17. iOSのオーディオの自動テスト
- 18. Entity Framework 6の自動コンパイル済みクエリ
- 19. フラッシュゲームのテスト自動化ツール
- 20. MPSアプリケーションの自動テスト
- 21. IEツールバーの自動テスト?
- 22. Tableauレポートの自動テスト
- 23. Tizen TV:UIテストの自動化
- 24. WinFormsとWPFの自動テスト
- 25. EPiServerでの自動UIテスト
- 26. RESTfulなテストの自動化
- 27. JenkinsのVeriFIXテスト自動化
- 28. バックグラウンドサービスの自動テストAndroid
- 29. クロムブルートゥースapiの自動テスト
- 30. クラシックASPの自動テスト
プログラムコンソールプログラムをテストするためにPerl 6を使用することを意味しますか? – piojo
ユーザのやりとりを伴うメソッドを提供するPerl 6モジュールをテスト( 'use test')します。 –