ひ日誌
2006-11-02 ( ja -> en )
_ [rubycocoa][rubyosa][macosx] GUIのテスト自動化
RubyOSA の ML で流れていた Sending keystrokes via System Events を見て、System Events.app あたりを使えば、サンプルアプリを起動して操作するテストもある程度自動化できるかなと思った。
perform v : cause the target process to behave as if the action
were applied to its UI element
perform action : The action to be performed.
を使うとNSResponderのインスタンスのactionを外から実行させられそう。実行後、スクリーンキャプチャして、画像の比較(パターンマッチ)でテストするとか…
_ [ruby] 標準入出力を自前IOに切り替えるとして
$stdout と $stderr を自前のIOオブジェクトに置き換えようか、などと考えてるんだけど、その場合、何を実装する必要があるんだろうか?StringIOも一通り実装してるぽいし、全部実装しなきゃいけないのかな?JavaだかPowerPlantだか忘れたけど、とりあえず read_byte と write_byte くらい実装しとけば効率はともかく動く、みたいになってると思うんだけど、そんな風なのはないんだろうなぁ。普通、IOを自前で作る必要はあんまりなさそうだからしょうがないけど…
たしかwriteメソッドが必要だったと思います。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%CA%D1%BF%F4#a.24stdout
岩月さんどうもです。writeだけ実装すればいいなんて、ちゃんと考えられてたんですね。マニュアルの IO や StringIO の方ばっかり見てて、グローバル変数のところを見逃してました。今まで、ときどき $stderr.puts などと書いていたんですが、これは間違った書き方だったのかな?