JUnit说测试失败了。看区别说内容是一样的

JUnit说测试失败了。看区别说内容是一样的,junit,intellij-idea,assert,Junit,Intellij Idea,Assert,JUnit说测试失败了。然而,当我按下“查看差异”链接时,它显示内容是相同的。那么,如果两个对象相同,为什么测试会失败呢 我正在运行的测试。 Assert.assertSame(card,vCardService.DecodeVCard(text)); 当我按下“查看差异”链接时会显示此信息 错误。 Expected :Card [CardId=1, UserId=0, FirstName=Joel, LastName=Dean, WorkNumber=18769023684,

JUnit说测试失败了。然而,当我按下“查看差异”链接时,它显示内容是相同的。那么,如果两个对象相同,为什么测试会失败呢

我正在运行的测试。

 Assert.assertSame(card,vCardService.DecodeVCard(text));
当我按下“查看差异”链接时会显示此信息

错误。

 Expected :Card [CardId=1, UserId=0, FirstName=Joel, LastName=Dean,     WorkNumber=18769023684, CellNumber=18765757810, Email=jdeanjj1000@gmail.com, Title=Mr., UserProfileImageUrl=null, CompanyName=Xormis, CompanyAddress=null, CompanyLatitude=0.0, CompanyLongitude=0.0, LogoUrl=null, QrCodeUrl=null, QrVCardUrl=null, VCardUrl=null, FacebookUrl=null, Website=null, ShareCount=0]
Actual   :Card [CardId=1, UserId=0, FirstName=Joel, LastName=Dean, WorkNumber=18769023684, CellNumber=18765757810, Email=jdeanjj1000@gmail.com, Title=Mr., UserProfileImageUrl=null, CompanyName=Xormis, CompanyAddress=null, CompanyLatitude=0.0, CompanyLongitude=0.0, LogoUrl=null, QrCodeUrl=null, QrVCardUrl=null, VCardUrl=null, FacebookUrl=null, Website=null, ShareCount=0]
 <Click to see difference>
    at org.junit.Assert.fail(Assert.java:88)
    at org.junit.Assert.failNotSame(Assert.java:737)
    at org.junit.Assert.assertSame(Assert.java:680)
    at org.junit.Assert.assertSame(Assert.java:691)
    at com.grikly.app.test.VCardServiceTest.testDecodeVCard(VCardServiceTest.java:68)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
应为:卡[CardId=1,UserId=0,FirstName=Joel,LastName=Dean,WorkNumber=18769023684,CellNumber=18765757810,电子邮件=jdeanjj1000@gmail.com,Title=Mr.,UserProfileImageUrl=null,CompanyName=Xormis,CompanyAddress=null,companyalidate=0.0,CompanyLongitude=0.0,LogoUrl=null,QrCodeUrl=null,QrVCardUrl=null,VCardUrl=null,FacebookUrl=null,Website=null,ShareCount=0]
实际:信用卡[CardId=1,UserId=0,FirstName=Joel,LastName=Dean,WorkNumber=18769023684,CellNumber=18765757810,电子邮件=jdeanjj1000@gmail.com,Title=Mr.,UserProfileImageUrl=null,CompanyName=Xormis,CompanyAddress=null,companyality=0.0,CompanyLongitude=0.0,LogoUrl=null,QrCodeUrl=null,QrVCardUrl=null,VCardUrl=null,FacebookUrl=null,Website=null,Share计数=0]
位于org.junit.Assert.fail(Assert.java:88)
位于org.junit.Assert.failNotSame(Assert.java:737)
位于org.junit.Assert.assertSame(Assert.java:680)
位于org.junit.Assert.assertSame(Assert.java:691)
在com.grikly.app.test.VCardServiceTest.testDecodeVCard上(VCardServiceTest.java:68)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于org.junit.runners.model.FrameworkMethod$1.runReflectVeCall(FrameworkMethod.java:47)
位于org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
位于org.junit.runners.model.FrameworkMethod.invokeeexplosive(FrameworkMethod.java:44)
位于org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
位于org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
位于org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
位于org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
位于org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
位于org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
位于org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
访问org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
位于org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
位于org.junit.runners.ParentRunner.run(ParentRunner.java:309)
位于org.junit.runner.JUnitCore.run(JUnitCore.java:160)
位于com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76)
位于com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
位于com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

您需要assertEquals;如果它们是相同的对象,则需要assertSame。

您需要assertEquals;如果它们是相同的对象,则需要assertSame。

我遇到了相同的问题,但在比较两个字符串对象时(!!!)。 如果你使用IntelliJ,它就不是那么聪明了

(X,即(Y))的资产

它不会显示“\n”和“\n”之间的区别,即使它存在。
我可以建议改为使用assertEquals(),这样问题就显而易见了。

我也遇到了同样的问题,但是在比较两个字符串对象时(!!!)。 如果你使用IntelliJ,它就不是那么聪明了

(X,即(Y))的资产

它不会显示“\n”和“\n”之间的区别,即使它存在。
我建议改为使用assertEquals(),这样问题就显而易见了。

IntelliJ会告诉您“内容相同”,即使两个字符串的行尾样式不同。例如,如果实际字符串具有Unix样式的结尾,而预期字符串具有Windows样式的结尾,IntelliJ也会显示“内容相同”,但断言将失败。

IntelliJ将告诉您“内容相同”,即使两个字符串的行尾样式不同。例如,如果实际字符串具有Unix样式的结尾,而预期字符串具有Windows样式的结尾,IntelliJ将显示“内容相同”"但是这个断言会失败。

嗯,你是否改写了equals。如果这不是答案,就有点不知所措问题是我在比较两个对象。虽然它们包含相同的信息,但本质上是不同的,所以我认为这就是问题的原因。嗯,你是否改写了equals。如果这不是答案,就有点不知所措问题我在比较两个物体。虽然它们包含相同的信息,但本质上是不同的,所以我认为这就是问题的原因。