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());
}