Android 枚举类型的单元测试
Android unit test for Enum type
我遇到了一些奇怪的事情。
函数示例:
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
黑不黑就是黑。这是黑魔法。 :/
我该怎么做才能完成这项工作(即通过测试)?
您需要 AssertEquals,而不是 AssertSame
assertEquals(java.lang.Object expected, java.lang.Object actual)
Asserts that two objects are equal.
assertSame(java.lang.Object expected, java.lang.Object actual)
Asserts that two objects refer to the same object
您的代码正在将对象 F.x 与枚举对象 Pawn.Black 进行比较。应该是
public void testValue(){
F mF = new F();
Assert.assertEquals(F.Pawn.Black, mF.test());
}
我遇到了一些奇怪的事情。 函数示例:
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
黑不黑就是黑。这是黑魔法。 :/ 我该怎么做才能完成这项工作(即通过测试)?
您需要 AssertEquals,而不是 AssertSame
assertEquals(java.lang.Object expected, java.lang.Object actual) Asserts that two objects are equal.
assertSame(java.lang.Object expected, java.lang.Object actual) Asserts that two objects refer to the same object
您的代码正在将对象 F.x 与枚举对象 Pawn.Black 进行比较。应该是
public void testValue(){
F mF = new F();
Assert.assertEquals(F.Pawn.Black, mF.test());
}