2011-11-18 96 views
-1

我正在用JUnit測試Java應用程序。下面是一個具體的方法的源代碼:測試Java類

public class Surgery { 
    Vector<Patient> patients; 
    String name; 

    public Surgery(String name) { 
     patients = new Vector<Patient>(); 
     this.name = name; 
    } 

    public Patient findPatient(String name) { 
     Iterator<Patient> patientIt = patients.iterator(); 
     while(patientIt.hasNext()) { 
      Patient next = patientIt.next(); 
      if (next.getName().equals(name)) 
       return next; 
     } 
     return null; 
    } 

這是JUnit測試方法:

public class SurgeryTest { 
    private Vector<Patient> vector; 
    Surgery surgery_N =new Surgery("Teddy"); 
    ByteArrayOutputStream ans = new ByteArrayOutputStream(); 
    final String separator = System.getProperty("line.separator"); 

    @Test 
    public void testFindPatient() { 
     surgery_N.findPatient("Teddy"); 
    } 
} 

我需要測試在源代碼中的方法的每個語句。我卡住了,不知道還有什麼要做。任何解決方案

+0

這看起來像一個課堂作業。如果是這樣,請將此帖標記爲家庭作業 –

回答

1

Surgery類包含無需中途補充患者從您給予我們的代碼示例,讓你的單元測試應該什麼也沒找到。

要測試的源代碼的方法,每個語句應創建一個涵蓋的可能路徑每一個多重考驗你的代碼。這意味着,在您的測試中,您需要測試您返回患者姓名(如果存在)以及患者姓名不存在(返回null)的情況。

下面是一些例子方法爲您的工作從:

public void testFindPatientWherePatientExists() { 
    Patient thePatient = surgery.findPatient("Teddy"); 
    assertEquals("Teddy", thePatient.getName()); 
} 

public void testFindPatientWherePatientDoesntExist() { 
    assertNull(surgery.findPatient("I dont exist")); 
} 
0

什麼是預期的結果,當你調用findPatient(...)?您可以使用assertEqual(...)

public class SurgeryTest { 
    Surgery surgery; 

    @Before 
    public void setUp() { 
     surgery = new Surgery("Teddy"); 
    } 

    @Test 
    public void testFindPatient() { 
     Patient p = ...; // expected result 
     assertEquals(p, surgery.findPatient("Teddy")); 
    } 
} 

@Before註釋的方法將@Test標註每個方法之前被稱爲實際結果比較預期結果。因此,每次都要對新手術對象進行測試。

0

首先,請注意,你傳遞給手術構造函數名稱沒有得到安置到患者載體。這是一個手術領域。建議您將arg重命名爲「surgeryName」,然後您需要一個新方法addPatient(String patientName);並調用addPatient(「Teddy」)。

這就是說,一般來說,您應該測試名稱存在和名稱缺席的情況。例如

(的assert方法確切的名稱可能會有所不同)

assertNotNull(surgery.findPatient("Teddy")); 
assertNull(surgery.findPatient("A Name I did not add")); 

(第一行是如果它的assertEquals更精確的()之類wannik建議。