如何使用JUnit有效地测​​试方法

时间:2015-03-21 18:45:26

标签: java testing junit

我的第一种方法很简单,它只是一个toString,它输出3个类特定的字段

public String toString(){
    return String.format("%s/%s/%s",street,city,postcode);
}

在JUnit中,它给我这个以形成测试,我不确定如何有效地做到这一点。

@Test
public void testToString() {
    System.out.println("toString");
    Address instance = null;
    String expResult = "";
    String result = instance.toString();
    assertEquals(expResult, result);
    // TODO review the generated test code and remove the default call to fail.
    fail("The test case is a prototype.");
}

我已经对JUnit进行了大量的研究,并且理解了测试的概念,但是我可以很好地了解如何使用我的代码。另外我如何有效地测试这个方法,这是一个子类中的方法,它是父类中的抽象方法

@Override
int getDiscountRate() {
   return this.companyDiscount; 
}

它给我这个测试

@Test
public void testGetDiscountRate() {
    System.out.println("getDiscountRate");
    BusinessOrganisationDetails instance = null;
    int expResult = 0;
    int result = instance.getDiscountRate();
    assertEquals(expResult, result);
    // TODO review the generated test code and remove the default call to fail.
    fail("The test case is a prototype.");
}

1 个答案:

答案 0 :(得分:1)

这看起来不错。当然,您需要实例化实例变量,否则会导致NullPointerException。

在这里,它最终会是什么样子:

@Test
public void testToString() {
    System.out.println("toString");
    Address instance = new Address();
    instance.setStreet("Somestreet");
    instance.setCity("Somecity");
    instance.setPostcode("12345");
    String expResult = "SomestreetSomecity12345";
    String result = instance.toString();
    assertEquals(expResult, result);
}

另一个测试:

@Test
public void testGetDiscountRate() {
    System.out.println("getDiscountRate");
    BusinessOrganisationDetails instance = new BusinessOrganisationDetails();
    instance.setCompanyDiscount(50);
    int expResult = 50;
    int result = instance.getDiscountRate();
    assertEquals(expResult, result);
}