首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >instanceOf对sameInstance

instanceOf对sameInstance
EN

Stack Overflow用户
提问于 2016-05-18 07:46:58
回答 2查看 475关注 0票数 0

我正在用Mockito编写一个测试类。我有一个类,它有一个返回另一个类的方法。

代码语言:javascript
复制
public BuilderClass build(){
     return AnotherClass;
}

当我用

代码语言:javascript
复制
assertThat(BuilderClass.build(), is(instanceOf(AnotherClass.class)));

测试是可以的,但是当我使用

代码语言:javascript
复制
assertThat(BuilderClass.build(), is(sameInstance(AnotherClass.class)));

测试是错误的。那么,使用instanceOf还是sameInstance有什么区别呢?

致以问候。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-18 07:49:43

来自javadoc

  • 创建一个匹配器,该匹配程序仅在所检查的对象与指定的目标对象是同一个实例时匹配。

两个指针都链接到同一个内存位置。

代码语言:javascript
复制
Foo f1 = new Foo();
Foo f2 = f1;
assertThat(f2, is(sameInstance(f1)));

以下是完整的测试:

代码语言:javascript
复制
public class FooTest {

class Foo {

}

private Foo f1 = new Foo();
private Foo f2 = new Foo();

/**
 * Simply checks that both f1/f2 are instances are of the same class
 */
@Test
public void isInstanceOf() throws Exception {
    assertThat(f1, is(instanceOf(Foo.class)));
    assertThat(f2, is(instanceOf(Foo.class)));
}

@Test
public void notSameInstance() throws Exception {
    assertThat(f2, not(sameInstance(f1)));
}

@Test
public void isSameInstance() throws Exception {
    Foo f3 = f1;
    assertThat(f3, is(sameInstance(f1)));
}
}
票数 3
EN

Stack Overflow用户

发布于 2016-05-18 07:53:29

sameInstance意味着这两个操作数是对同一个内存位置的引用。instanceOf测试第一个操作数是否真的是第二个操作数(类)的实例(对象)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37293292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档