分別看一下JUnit和TestNG對assertEquals()的定義:
JUnit:
static void assertEquals(java.lang.Object eXPected, java.lang.Object actual)
static void assertEquals(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
TestNG:
static void assertEquals(java.lang.Object actual, java.lang.Object expected)
static void assertEquals(java.lang.Object actual, java.lang.Object expected, java.lang.String message)
忽略各參數的類型不予考慮,重新看 actual, expected, message 這三個參數的前后順序:
JUnit中的順序是:(message), expected, actual。
TestNG中的順序是:actual, expected, (message)。
這其中的細微區別是,actual(實際值)與expected(期望值)的前后順序,當message(信息文本)存在時它與另外兩個參數的相對位置。在JUnit中,message(假如它存在的話)處于優先位置,其次是expected,再次是actual;而在TestNG中,恰恰是完全相反,actual處于優先位置,其次是expected,再次是message。
相比較而言,我認為TestNG對assertEquals()的定義更符合人的思維邏輯,也就是所謂的“用戶友好性”另強一些。當然這只是個人觀點,見仁見智嘛。
當初我第一次看到JUnit中assertEquals()的定義時,就在想,為什么不是actual在前而expected在后?今天第一次看到TestNG對assertEquals()的定義,忽然有種“英雄所見略同”的感覺。當然現在提這一出有些“馬后炮”的味道。
就憑這一點,我為TestNG叫好!
新聞熱點
疑難解答