我遇到了一些奇怪的事情。 功能示例:
public class F {
public enum Pawn {Black, White}
public Pawn x;
public F(){
this.x = Pawn.Black;
}
public Pawn test(){
return this.x;
}
}
单元测试:
import junit.framework.Assert;
import junit.framework.TestCase;
import <package ... >.F;
public class FTest extends TestCase {
public void testValue(){
F mF = new F();
Assert.assertSame(Pawn.Black, mF.test());
}
}
和JUnit输出:
junit.framework.AssertionFailedError: expected same:<Black> was not:<Black>
Expected :Black
Actual :Black
黑色不是黑色而是黑色。这是黑魔法。 :/ 我该怎么做才能完成这项工作(即通过考试)?
答案 0 :(得分:1)
你需要AssertEquals,而不是AssertSame
assertEquals(java.lang.Object expected,java.lang.Object actual) 断言两个对象是相等的。
assertSame(java.lang.Object expected,java.lang.Object actual) 断言两个对象引用同一个对象
您的代码正在将对象F.x与枚举对象Pawn.Black进行比较。它应该是
public void testValue(){
F mF = new F();
Assert.assertEquals(F.Pawn.Black, mF.test());
}