java - 枚举类型的Android单元测试

标签 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

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

最佳答案

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

关于java - 枚举类型的Android单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859035/

相关文章:

node.js - 单元测试快速应用程序

java - 在 Tomcat 服务器上运行 Java Servlet 单元测试

java - Liferay : How to send parameter using URL?

javascript - 电话间隙 : How to make javascript calls from a native Android menu

android - Phonegap Android 中的平滑 3d 转换

android - 我可以验证用户是否拥有用于在线功能的 Android 应用程序的合法副本?

entity-framework - 将 EF 查询与 BL 分离 - 扩展方法 VS Class-Per-Query

java - 未知错误导致服务器崩溃 - 控制台也崩溃

java - 无法访问浏览器 :Session Not Created Exception

java - paintComponent() 不会绘制