双向断言

时间:2018-11-05 11:51:38

标签: java testing automation assert

我正在进行Web自动化测试,例如,我有两种非常基本的方案:

  

测试a)步骤1:将记录添加到数据库步骤   2:检查网站   正确显示记录

     

测试b)步骤1:在网站上编辑记录步骤   2:检查是否记录   已正确保存在数据库中

通过记录,可以说这是带有一些“值”的简单文本字段

所以对于第一种情况,我将使用断言等于:

private void check1()
{
    Assert.assertEquals(valueFromDB, valueOnWebsite)
    //many more assertions for more values here        
}

但是,对于第二种情况,它将是:

private void check2()
{
    Assert.assertEquals(valueOnWebsite, valueFromDB)
    //many more assertions for more values here        
}

因此,基本上,它们两者都相同,但是被颠倒了,以便在断言不正确的情况下抛出正确的错误日志,现在介绍如何在单个方法中进行设置,这对于两种情况都可以使用,但是如果值不相等?

1 个答案:

答案 0 :(得分:1)

使用overload which receives a message

String message = String.format("valueFromDB value: %s, valueOnWebsite value: %s", valueFromDB, valueOnWebsite);
Assert.assertEquals(message, valueFromDB, valueOnWebsite);

如果您要覆盖内置消息,则需要执行自己的实现

if (!valueFromDB.equals(valueOnWebsite)) {
  throw new AssertionFailedError(String.format("valueFromDB value: %s, valueOnWebsite value: %s", valueFromDB, valueOnWebsite));
}