2017-08-29 11 views
0

私はテストブロックとヘルパーのためのいくつかのスペック/サンプルテストを開発し始めており、私は複数のテスターに​​跨って走りたいと思っています。私はテスト中にテスターを設定するための明確なAPIは見ませんでした。オンザフライでテスターを切り替えるAPI?

Origen.with_tester('j750.rb') 
    # do whatever with this tester 
end 

それとも

:正常に動作し、本当に悪いことではありませんが、そこは似た構文のいくつかの種類である

Origen.environment.temporary = 'j750.rb' 
Origen.load_target('default') 

:私たちは何かを行うことができますOrigenTestersスペックで見ます

Origen.switch_tester('j750.rb') 

Origen.tester = OrigenTesters::J750.new 

# or something to these effects 

おかげ

答えて

1

ターゲットを変更すると、DUTとTESTEの両方を変更するための機構でありますあなたの最初の例で行われた方法は根本的に正しいです。

現時点では新しいテスターをインスタンス化することはできますが、それは実際には設計ではなく、私が奨励したいパターンではありません。実際には、ターゲット/環境のコンボが2人の異なるテスターをインスタンス化していたので、最近、我々は最近、そのようなものに対してバグケースを持っていました。 将来、2番目のテスタをインスタンシエートしようとすると、今日の2番目のDUTオブジェクトをインスタンス化しようとした場合と同じようにエラーが発生します。 それはちょっとした趣味ではなく、コールバックやそのようなことを聞​​くために現在のランタイムを登録/登録解除する作業がかなりあります。 DUTとテスタをターゲットのロード・イベント内に変更できる時間を制限します。ここにかかわらず、弱点があり

Origen.load_target('my_test_target', tester: OrigenTesters::V93K) 
tester.v93k? # => true 
tester.j750? # => false 
Origen.load_target('my_test_target', tester: OrigenTesters::J750) 
tester.v93k? # => false 
tester.j750? # => true 

:テストコード内で次に

# target/my_test_target.rb 
options[:tester].new 
MyDUT.new 

:私はConfigurable Targetsは大体あなたがここに何をしたいと思います

が、これはAPIの観点からかなりきれいなようです:このようにターゲットをプログラム的に操作するためのAPIは、それ以来、環境内のテスターとターゲット内のDUTをロードするために進化してきたという事実と歩調を合わせていません。

ターゲットや環境の読み込みが常にロードされるということを強制し続けることを確実にしたいと思います。しかし、我々はおそらく、あまりにも設定可能な環境の概念を導入する必要があります。

# environment/configurable.rb 
options[:tester].new 

を次に、あなたのテストコード内:

# Calling this would re-load the current target as well 
Origen.load_environment('configurable', tester: OrigenTesters::V93K) 
tester.v93k? # => true 
tester.j750? # => false 
Origen.load_environment('configurable', tester: OrigenTesters::J750) 
tester.v93k? # => false 
tester.j750? # => true 

しかし、書き込み時には、そのAPIはまだサポートされていません。

+0

大丈夫です。それは理にかなっている。はい、私はすべてをターゲットに投げ込まないようにしていました。設定可能な環境を追加するためにGithubで「強化」の問題を開いてもいいですか? – coreyeng

+0

@coreyeng、はいしてください – Ginty

関連する問題