2011-11-18 51 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建议。