當父類,和子類有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
新聞熱點
疑難解答