ターゲットを変更すると、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はまだサポートされていません。
大丈夫です。それは理にかなっている。はい、私はすべてをターゲットに投げ込まないようにしていました。設定可能な環境を追加するためにGithubで「強化」の問題を開いてもいいですか? – coreyeng
@coreyeng、はいしてください – Ginty