Part I
Assert 提供一組判斷結果的方法(assert methods),像是assertXXXX()等,這些方法都是static method,它們會在斷定結果不一致時丟出一個實作Throwable的物件,當中會帶有失敗的訊息。
我們先撰寫一個簡單的Student類別,以利用它來進行一些測試:
Exception in thread "main" junit.framework.ComparisonFailure:
getName metohd failure expected:<Justin> but was:<B83503124>
at junit.framework.Assert.assertEquals(Assert.java:81)
at Test3.main(Test3.java:7)
Part 2
assertEquals()提供因應各種資料型態的多型,像是int、String等等,如果是比較物件的話,則根據equals()方法傳回的true或false來比較,所以在您想要比較兩個物件的field是否相同時,您要重新定義您的equals()方法,例如在我們的Student中,我們的equals()可以定義如下:
Student student1 = new Student("B83503124", "Justin", 100);
Student student2 = new Student("B83503124", "Justin", 100);
if (!student1.equals(student2))
{
System.out.println("instances are unequal");
}
使用Assert的assertEquals()則可以這麼撰寫:
Test object is equal with JUnit
Student student1 = new Student("B83503124", "Justin", 100);
Student student2 = new Student("B83503124", "Justin", 100);
Assert.assertEquals("instances are unequal", student1, student2);
Part III
比較兩個物件內容是否相同,通常是測試時很常進行的一個動作,而Assert類別也提供了像是assertTure()、assertFalse()、assertSame() 、assertNotSame()、assertNull()、assertNotNull()等等的方法,以便利各種測試場合的需要,例如我們上面的測試也可以這麼撰寫:
Use assertTrue method
Student student1 = new Student("B83503124", "Justin", 100);
Student student2 = new Student("B83503124", "Justin", 100);
Assert.assertTure(student1.equals(student2));