【问题标题】:Java junit testing with assertions on objects使用对象断言的 Java junit 测试
【发布时间】:2012-11-03 20:23:57
【问题描述】:

下面的代码在TestSegment类的setUp()方法中:

    this.inputSource11 = new InputCell(1, 1);
    this.activeSynapseObject = new Synapse(this.inputSource11);
    this.inputSource11.setActiveState(true);
    this.segmentObject.addSynapse(this.activeSynapseObject);

下面是TestSegment第95行的错误:

public void testGetSynapse()
{
    assertEquals(
        this.activeSynapseObject,
        this.segmentObject.getSynapse(inputSource11));
}

【问题讨论】:

  • 您能否展示一些您认为导致此故障的代码?
  • 您收到此错误是因为 TestSegment 类中的第 95 行有一个 JUnit 断言。这就是我们可以通过所附屏幕截图得出的结论。
  • 你能分享你的断言声明吗?

标签: java unit-testing


【解决方案1】:

我的猜测是您在断言中放置了两个对象。它们具有相同的值,但它们是不同的对象实例。我建议您在对象中定义一个equals() 比较字段值 方法,因为assertEquals() 依赖于以下equals 方法:

 public static void assertEquals(String msg, Object obj1, Object obj2) {
     if (obj1 == null && obj2 == null) {
       return;
     }

     if (obj1 != null && obj1.equals(obj2)) {
       return;
     }

     fail(msg + " expected=" + obj1 + " actual=" + obj2);
 }

【讨论】:

  • 在最近的问题更新 (r2) 之后是合理的。恭喜,你的猜测是正确的;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多