Origen sdk 如何在gem的rspec文件之间初始化和终止DUT?

Origen sdk 如何在gem的rspec文件之间初始化和终止DUT?,origen-sdk,Origen Sdk,我有一个gem,它支持两个具有通用DUT模型的不同库: 模块库 模块RSpec 类DUT 包括Origen::TopLevel 属性访问器:强制导入,:尼克,:修订 def初始化(选项={}) 选项={ 强制导入:false, 尼克:rspec, 修订版:a0 }.更新(选项) @强制导入=选项[:强制导入] @尼克=选项[:尼克] @修订=选项[:修订] 结束 结束 结束 结束 我有两个rspec文件: myserver:ondie_设备$ls规范 ringosc_spec.rb spec_

我有一个gem,它支持两个具有通用DUT模型的不同库:

模块库
模块RSpec
类DUT
包括Origen::TopLevel
属性访问器:强制导入,:尼克,:修订
def初始化(选项={})
选项={
强制导入:false,
尼克:rspec,
修订版:a0
}.更新(选项)
@强制导入=选项[:强制导入]
@尼克=选项[:尼克]
@修订=选项[:修订]
结束
结束
结束
结束
我有两个rspec文件:

myserver:ondie_设备$ls规范
ringosc_spec.rb spec_helper.rb testtrans_spec.rb
在每个spec文件中,初始化DUT和关闭DUT的最佳方法是什么?当我使用局部变量存储DUT时,我得到了以下错误:

myserver:ondie_设备$origen规格
[INFO]0.010[0.010]| | OndieDevices:加载环OSC型号
当已将OndieDevices::RSpec::DUT的实例定义为顶级时,尝试将OndieDevices::RSpec::DUT的实例设置为顶级!
我见过各种各样的方法,但似乎没有一种能完成我所需要的:

  • 防止上述错误
  • 确保Origen.top_级别已正确初始化,以便可以从gem代码库中随时获取Instance属性。例如
加载时出错。/spec/ringosc_spec.rb。
失败/错误:Pathname.new(“#{tmpdir}/#{Origen.top_level.nick}}{Origen.top_level.revision}{u ringosc#{data_type}.bin”)
命名错误:
nil:NilClass的未定义方法“nick”

您不能手动实例化多个顶级对象,它需要在目标加载/更改的上下文中完成

对于规范测试,最简单的方法是使用匿名目标-

Origen.target.temporary=->do
DUT.new
结束
Origen.load_目标
这也将安全地卸载任何现有目标(及其DUT),这些目标将解决您的问题

通常在
before:each
块中执行上述操作以在测试之间重新加载目标,或在
before:all
块中为spec文件中的所有测试加载相同的目标