Java JUnit 测试
我编了一个程序,在对其中的一个class写JUnit测试时构造出两个内容一样的新class,可测试结果显示这两个新class不相等,有好心人帮我看看代码并告诉我哪里出问题...
我编了一个程序,在对其中的一个class写JUnit测试时构造出两个内容一样的新class,可测试结果显示这两个新class不相等,有好心人帮我看看代码并告诉我哪里出问题了么?谢谢了!!!下面是我的代码,JUnit代码中第一个test没问题,返回true,可第二个test返回false,就是看看第二个问题在哪,我本来预期的第二项test也应该返回true。
Class:
public class Thing {
protected String name;
public Thing() {
this.name = "";
}
public Thing(String name) {
this.name = name;
}
public String toString() {
if (this.getClass().getSimpleName().equals("Thing"))
return name;
return name + " " + this.getClass().getSimpleName();
}
}
JUnit Class:
import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.Assert;
public class JUnit_Test {
static Thing testThing;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
testThing = new Thing("banana");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void testConstructor_1() {
Assert.assertTrue(this.testThing.equals(this.testThing));
}
@Test
public void testConstructor_2(){
Thing t1 = new Thing("banana");
Assert.assertTrue(this.testThing.equals(t1));
}
} 展开
Class:
public class Thing {
protected String name;
public Thing() {
this.name = "";
}
public Thing(String name) {
this.name = name;
}
public String toString() {
if (this.getClass().getSimpleName().equals("Thing"))
return name;
return name + " " + this.getClass().getSimpleName();
}
}
JUnit Class:
import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.Assert;
public class JUnit_Test {
static Thing testThing;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
testThing = new Thing("banana");
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void testConstructor_1() {
Assert.assertTrue(this.testThing.equals(this.testThing));
}
@Test
public void testConstructor_2(){
Thing t1 = new Thing("banana");
Assert.assertTrue(this.testThing.equals(t1));
}
} 展开
展开全部
1、对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
2、对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
比如:
class A
{
A obj1 = new A();
A obj2 = new A();
}
那么:obj1==obj2是false
obj1.equals(obj2)是false
所以若想正确,必须重载equals方法,自己实现比较。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
2、对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
比如:
class A
{
A obj1 = new A();
A obj2 = new A();
}
那么:obj1==obj2是false
obj1.equals(obj2)是false
所以若想正确,必须重载equals方法,自己实现比较。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询