当父类,和子类有Static时,先初始化Static,再初始化子类的Static,再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。
当expected和actual都是String类型时,ComparisonFailure还会找出是前后相同的串,并用[Different String]标明那些不相同的字符串,也就是expectedToString和actualToString的格式将会变成:…${sameString}[${differentString}]${sameString}…。其中“…”只会在相同的字符串太长的情况下才会出现,这个长度标准目前(JUnit4.10)是20个字符。具体实现参考ComparisonFailure类,它继承自AssertionError,这里不再展开。
/** * Asserts that two objects are equal. If they are not, an * {@link AssertionError} is thrown with the given message. If * <code>expected</code> and <code>actual</code> are <code>null</code>, * they are considered equal. * * @param message * the identifying message for the {@link AssertionError} (<code>null</code> * okay) * @param expected * expected value * @param actual * actual value */ static public void assertEquals(String message, Object expected, Object actual) { if (expected == null && actual == null) return; if (expected != null && isEquals(expected, actual)) return; else if (expected instanceof String && actual instanceof String) { String cleanMessage= message == null ? "" : message; throw new ComparisonFailure(cleanMessage, (String) expected, (String) actual); } else failNotEquals(message, expected, actual); } private static boolean isEquals(Object expected, Object actual) { return expected.equals(actual); } /** * Asserts that two objects are equal. If they are not, an * {@link AssertionError} without a message is thrown. If * <code>expected</code> and <code>actual</code> are <code>null</code>, * they are considered equal. * * @param expected * expected value * @param actual * the value to check against <code>expected</code> */ static public void assertEquals(Object expected, Object actual) { assertEquals(null, expected, actual); }本文转自:http://blog.csdn.net/u011239443/article/details/53150159
新闻热点
疑难解答