【问题标题】:How to know what's a stub?如何知道什么是存根?
【发布时间】:2012-12-13 02:55:53
【问题描述】:

当你编写程序时,存根总是意味着同样的事情吗?

“存根为对象、方法或 功能以删除外部依赖项。存根是 通常在单元和组件测试期间使用。如果你想 编写单元测试并需要替换对数据库的简单调用, 外部库(例如,文件 I/O)或其他系统 API、存根 可能非常适合您的需求。”

我认为存根和骨架仅在 CORBA 中,但这里有一个存根,这是同一件事/概念吗?当“存根”一词出现在相当不同的编程模型中时(RMI 和 MIPS 组件是 2 个相当不同的),两者都有称为“存根”的概念/事物,我也知道 RMI / CORBA 有一种称为骨架的东西但也有可能有一个没有骨架的存根或什么?

例如,当 main 转换为程序集时,它在这里被称为 stud,是否存在与该存根和骨架的连接,用于网络编程(如 CORBA),或者尽管两者都称为存根,但它没有连接?

movia r8,stub # source
movia r9,0x800020 # destination
ldw r10,0(r8) # read
stw r10,0(r9) # write
ldw r10,4(r8) # read part 2
stw r10,4(r9) # write
ldw r10,8(r8) # read jump
stw r10,8(r9) # write
... # initialize others

上面的代码是存根的例子吗?如果是这样,什么是骨架或不适用?

感谢您的信息。

【问题讨论】:

  • 这是一个非常通用的编程术语。看看维基百科的文章:en.wikipedia.org/wiki/Method_stub
  • 我不知道是否有一个真正的定义,但上面的那个东西对我来说就像一个存根。同义词可以是包装器。
  • 存根是一个通用术语,并不特定于任何语言、平台或环境。您引用的通用定义几乎涵盖了它,出于测试目的,甚至为了分发某些东西,您可以使用存根来关闭一些您没有真正使用或想要伪造的悬空接口,以便它不会干扰,或者如你引用的定义测试接口。

标签: assembly rmi mips corba stub


【解决方案1】:

CORBA 和 RMI 存根是一个非常具体的对象,它在本地表示某个远程对象。该对象存在于服务器端,存根存在于客户端。存根实现相同的接口(具有相同的工作方法),将所有调用转发到远程对象,也接收返回的结果和异常。存根类通常是自动生成的。

一般来说,存根有不同的含义(只完成了一半的东西,通常只是足以让代码编译但不能正常运行)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2011-02-14
    相关资源
    最近更新 更多