Enum类型的Android单元测试

时间:2015-04-24 23:15:11

标签: java android unit-testing junit enums

我遇到了一些奇怪的事情。 功能示例:

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

黑色不是黑色而是黑色。这是黑魔法。 :/ 我该怎么做才能完成这项工作(即通过考试)?

1 个答案:

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