我在尝试弄清楚如何使用V93K进行规格测试方面遇到了很多麻烦。对于J750来说很容易,我只是这样做了:
before(:context) do
Origen.environment.temporary = 'j750.rb'
Origen.load_target('default')
c = Class.new do
include OrigenTesters::ProgramGenerators
include TIPShared::Interfaces::AnalogTestBase
def func(name, options={})
@current_test_config = test_instances.functional(name, options)
@current_test_config
end
def t
@current_test_config
end
end
@test_interface = c.new
end
然后我可以调用@ test_interface.func并用它做任何事情。
尝试与93K类似的东西,我遇到了各种各样的问题,最新的问题没有任何意义,因为它仍在寻找IGXL的东西。到目前为止我所拥有的是:
before(:context) do
Origen.environment.temporary = 'v93k.rb'
Origen.load_target('default')
Origen.app.load_target!
@c = Class.new do
include OrigenTesters::ProgramGenerators
include OrigenTesters::SmartestBasedTester
#include OrigenTesters::SmartestBasedTester::V93K
#include OrigenTesters::SmartestBasedTester::Base
include TIPShared::Interfaces::AnalogTestBase
def func(name, options={})
@current_test_config = test_suites.add(name, options)
@current_test_config.test_method = test_methods.origen.functional_test
@current_test_config
end
def t
@current_test_config
end
end
@test_interface = @c.new
Origen.file_handler.current_file = Pathname.new("#{Origen.app.root}/temp.rb")
end
但是尝试@ test_interface.func只是给出了:
这对我来说非常混乱,因为我认为OrigenTesters :: ProgramGenerators会选择V93K。我无法弄清楚这是测试人员的问题/缺点还是这是规格。我认为规范基本上会在下一个上下文中“重启”应用程序,所以不应该加载IGXL任何东西。
Failure/Error: @current_test_config = test_suites.add(name, options)
NameError:
uninitialized constant OrigenTesters::IGXLBasedTester::J750::TestSuite
Did you mean? OrigenTesters::IGXLBasedTester::J750::TestInstance
# /proj/.tec_k3s/users/cengelken_b50956/tr_origen/gems/ruby/2.3.0/gems/origen_testers-0.10.0/lib/origen_testers/smartest_based_tester/base/test_suites.rb:21:in `add'
# ./spec/analog_test_base_spec.rb:262:in `func'
# ./spec/analog_test_base_spec.rb:281:in `block (5 levels) in <top (required)>'
# ./config/commands.rb:27:in `<top (required)>'
# /proj/.tec_k3s/users/cengelken_b50956/tr_origen/gems/ruby/2.3.0/gems/origen-0.24.0/lib/origen/commands.rb:183:in `require'
# /proj/.tec_k3s/users/cengelken_b50956/tr_origen/gems/ruby/2.3.0/gems/origen-0.24.0/lib/origen/commands.rb:183:in `<top (required)>'
任何帮助都将不胜感激。
谢谢,
科里
答案 0 :(得分:1)
我想知道这里定义类的方式是否导致不发生特定于平台的API的分配,请参见此处:https://github.com/Origen-SDK/origen_testers/blob/master/lib/origen_testers/program_generators.rb#L23
您可以尝试手动调用c._load_generator
以查看是否有帮助。
或者,明确包括生成器:include OrigenTesters::V93K::Generator
您的TIPShared::Interfaces::AnalogTestBase
模块可以包含Teradyne发电机吗?
编辑:
经过进一步讨论后,问题似乎是正在创建的新界面未分配给Origen.interface
。
现有一个示例,说明如何在测试环境中处理多个界面创建:https://github.com/Origen-SDK/origen_testers/blob/master/spec/interface_spec.rb#L22
答案 1 :(得分:1)
谢谢,@ adty。这最终成了问题。我以前只是通过清除它们并将它们添加回来搞乱了界面,但实际上并没有设置Origen.interface。
我设法让这个工作。它不是最漂亮的,但似乎是有效的。要从J750切换到93K我做了:
# Create a dummy file for the V93K interface to use. Doesn't need to exists, it won't actually be used, just needs to be set.
Origen.file_handler.current_file = Pathname.new("#{Origen.app.root}/temp.rb")
# Load V93K environment and reload the target.
Origen.environment.temporary = 'v93k.rb'
Origen.load_target('default')
# Clear the existing interface and reset Origen's current interface.
# ASIDE: this must be done after setting the current tester.
Origen.interfaces.clear
Origen.reset_interface
这实际上是清除界面并将其设置为'NoInterface',但似乎工作完全相同,至少对于Specs测试目的。当我开始实际生成工作表时,不确定这是否会成为一个问题,但我们会发现。