testNG——Assert部分源码

equals方法介绍:https://www.cnblogs.com/xdp-gacl/p/3637073.html

java运算符 与(&)、非(~)、或(|)、异或(^):https://www.cnblogs.com/yesiamhere/p/6675067.html

java.lang.Class.isArray() 确定该Class对象表示一个数组类:https://www.yiibai.com/java/lang/class_isarray.html

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例:https://www.cnblogs.com/zjxynq/p/5882756.html

isInfinite方法——判断double值的大小是否是无穷大:https://blog.csdn.net/youyou_yo/article/details/48707353

isNaN方法——判断double值是否是一个非数字值:https://book.2cto.com/201309/31431.html

 

如果两个对象不相等,则统一调用这个方法抛出异常

static private void failNotEquals(Object actual , Object expected, String message ) {
    fail(format(actual, expected, message));
  }

1)format方法定义抛出异常的信息 

 static String format(Object actual, Object expected, String message) {
    String formatted = "";
    if (null != message) {
      formatted = message + " ";
    }

    return formatted + ASSERT_LEFT + expected + ASSERT_MIDDLE + actual + ASSERT_RIGHT;
  }

 2)fail抛出AssertionError异常:

public static void fail(String message) {
    throw new AssertionError(message);
  }

抛出确定的异常: 

public static void fail(String message, Throwable realCause) {
    AssertionError ae = new AssertionError(message);
    ae.initCause(realCause);

    throw ae;
  }

 

1、assertTrue

public static void assertTrue(boolean condition, String message) {
    if(!condition) {
      failNotEquals(condition, Boolean.TRUE, message);
    }
  }

2、  assertFalse

 public static void assertFalse(boolean condition, String message) {
    if(condition) {
      failNotEquals(condition, Boolean.FALSE, message); // TESTNG-81
    }
  }

3、assertNull

public static void assertNull(Object object, String message) {
    if (object != null) {
      failNotSame(object, null, message);
    }
  }

4、 assertNotNull

public static void assertNotNull(Object object, String message) {
    if (object == null) {
      String formatted = "";
      if(message != null) {
        formatted = message + " ";
      }
      fail(formatted + "expected object to not be null");
    }
    assertTrue(object != null, message);
  }

5、assertSame

public static void assertSame(Object actual, Object expected, String message) {
    if(expected == actual) {
      return;
    }
    failNotSame(actual, expected, message);
  }

5、assertNotSame

public static void assertNotSame(Object actual, Object expected, String message) {
    if(expected == actual) {
      failSame(actual, expected, message);
    }
  }

6、assertEquals

public static void assertEquals(Object actual, Object expected, String message) {
   //判断expected是否是数组类型
 if (expected != null && expected.getClass().isArray()) {
       assertArrayEquals(actual, expected, message);
       return;
    }
    assertEqualsImpl(actual, expected, message);
  }

 数组类型的判断

private static void assertArrayEquals(Object actual, Object expected, String message) {
    if (expected == actual) {
      return;
    }
    if (null == expected) {
      fail("expected a null array, but not null found. " + message);
    }
    if (null == actual) {
      fail("expected not null array, but null found. " + message);
    }
    //is called only when expected is an array
    if (!actual.getClass().isArray()) {
      failNotEquals(actual, expected, message);
    }
    int expectedLength = Array.getLength(expected);
    //判断长度是否一致
    if (expectedLength != Array.getLength(actual)) {
      failNotEquals(Array.getLength(actual), expectedLength, message == null ? "" : message
              + " (Array lengths are not the same)");
    }
    for (int i = 0; i < expectedLength; i++) {
      Object _actual = Array.get(actual, i);
      Object _expected = Array.get(expected, i);
      try {
        assertEquals(_actual, _expected);
      } catch (AssertionError ae) {
        failNotEquals(actual, expected, message == null ? "" : message
                + " (values at index " + i + " are not the same)");
      }
    }
  }
非数组类型的判断:assertEqualsImpl
private static void assertEqualsImpl(Object actual, Object expected,
          String message) {
      if((expected == null) && (actual == null)) {
        return;
      }
          //^异或,相同则为0,不同则为1
      if(expected == null ^ actual == null) {
        failNotEquals(actual, expected, message);
      }
      if (expected.equals(actual) && actual.equals(expected)) {
        return;
      }
      failNotEquals(actual, expected, message);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值