用于测试 StringBuffer 的 JUnit
JUnit to test for StringBuffers
作业:编写一个 JUnit 测试,假设您有两个 StringBuffer 引用,名为 sbOne 和 sbTwo,并且您只希望它在两个引用指向同一个 StringBuffer 对象时通过。
我想确保这确实是处理此作业的好方法。我写了假定的练习方法:
package StringBufferJUni;
public class StringBufferUni {
public static void main(String[] args){
}
public boolean StringBuff(StringBuffer sbOne, StringBuffer sbTwo){
sbTwo = sbOne;
if(sbTwo==sbOne){
return true;
}
else{
return false;
}
}
}
这是我的 JUnit 测试:
package StringBufferJUni;
import static org.junit.Assert.*;
import org.junit.Test;
public class JUnitStringBuffer {
@Test
public void test() {
StringBuffer sbOne = new StringBuffer("hello");
StringBuffer sbTwo = new StringBuffer("hello");
StringBufferUni stBuffer = new StringBufferUni();
boolean hel = stBuffer.StringBuff(sbOne, sbTwo);
assertEquals(true, hel);
}
}
这实际上是由于引用指向同一个对象而传递的吗?
这一行:
sbTwo = sbOne;
正在将一个对象 reference 设置为另一个对象的值。
这一行:
if( sbTwo==sbOne )
正在比较两个 references 是否相等,由于上面的行,这将始终为真。
它不会比较对象本身的任何内容(即:它 与 sbOne.equals(sbTwo)
不同)
如果你想判断引用是否指向同一个对象,那么你只需使用:
if (sbTwo==sbOne)
并删除行:sbTwo=sbOne
为了进一步考虑,这个测试说明了你在做什么:
@Test
public void test() {
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = sb1;
assertTrue(sb1 == sb2); // this will pass, same object reference
sb2 = new StringBuffer("hello"); // create a new object
assertFalse(sb1 == sb2); // this will be false, since the objects may be equal, but the references are not.
}
作业:编写一个 JUnit 测试,假设您有两个 StringBuffer 引用,名为 sbOne 和 sbTwo,并且您只希望它在两个引用指向同一个 StringBuffer 对象时通过。
我想确保这确实是处理此作业的好方法。我写了假定的练习方法:
package StringBufferJUni;
public class StringBufferUni {
public static void main(String[] args){
}
public boolean StringBuff(StringBuffer sbOne, StringBuffer sbTwo){
sbTwo = sbOne;
if(sbTwo==sbOne){
return true;
}
else{
return false;
}
}
}
这是我的 JUnit 测试:
package StringBufferJUni;
import static org.junit.Assert.*;
import org.junit.Test;
public class JUnitStringBuffer {
@Test
public void test() {
StringBuffer sbOne = new StringBuffer("hello");
StringBuffer sbTwo = new StringBuffer("hello");
StringBufferUni stBuffer = new StringBufferUni();
boolean hel = stBuffer.StringBuff(sbOne, sbTwo);
assertEquals(true, hel);
}
}
这实际上是由于引用指向同一个对象而传递的吗?
这一行:
sbTwo = sbOne;
正在将一个对象 reference 设置为另一个对象的值。
这一行:
if( sbTwo==sbOne )
正在比较两个 references 是否相等,由于上面的行,这将始终为真。
它不会比较对象本身的任何内容(即:它 与 sbOne.equals(sbTwo)
不同)
如果你想判断引用是否指向同一个对象,那么你只需使用:
if (sbTwo==sbOne)
并删除行:sbTwo=sbOne
为了进一步考虑,这个测试说明了你在做什么:
@Test
public void test() {
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = sb1;
assertTrue(sb1 == sb2); // this will pass, same object reference
sb2 = new StringBuffer("hello"); // create a new object
assertFalse(sb1 == sb2); // this will be false, since the objects may be equal, but the references are not.
}