关于单元测试的建议

时间:2016-07-07 20:43:49

标签: java unit-testing

我想在几个代码块上创建一些单元测试,但不确定我应该测试什么,单元测试对我来说是新的,我通过示例更好地学习。以下是相关代码。

ComponentDidMount
public static String buildAddressStreet(Address address)
{
  if(address.getAddressLines().size() > 0)
  {
     return address.getAddressLines().get(0);
  }
  else
  {
     return StringUtils.EMPTY;
  }
}
 public static Collection<Payment> collectFraudPayments(WebOrder order)
{
  return streamPaymentsFilterForFraud(order).collect(Collectors.toList());
}

private static Stream<Payment> streamPaymentsFilterForFraud(WebOrder order)
{
  return order.getPayments().stream()
     .filter(i -> i.getPayMethod().isCreditCard())
     .filter(i -> (!StringUtils.startsWith(i.getFraudStatusCode(), "A") ||  FraudStatusCode.isPossibleFraud(i.getDecisionResponse())) );
}
public static String getAddressLocation(Address address, int location)
{
  if(location < 3)
  {
     if(address.getAddressLines().size() >= location+1)
     {
        return address.getAddressLines().get(location);
     }
  }

  return null;
}
public static String getCommerceCustomerNumber(WebOrder order)
{
     Customer customer = findCustomer(order);

  if(customer != null)
  {
     return customer.getId();
  }
  else
  {
     return null;
  }
}

我理解这是一个很大的问题,我不希望为我编写的代码只是一个想法或示例,它将如何测试它。我以前写了基本的测试,但其中一些让我有点难过。感谢

2 个答案:

答案 0 :(得分:0)

单元测试有一些规则:

  1. 测试无 - 测试输入为无或零
  2. 测试一 - 测试输入为1或长度为1时
  3. 测试多个 - 在输入大于1或大于1
  4. 时进行测试
  5. 首先测试 - 测试输入是第一件事时会发生什么
  6. 最后测试 - 测试输入是最后一件事时会发生什么
  7. 测试所有代码路径 - 如果您拥有所有这些if语句,请测试if语句的所有组合。
  8. 了解测试效果的一个好方法是使用代码覆盖率工具,查看测试次数和次数。对于java,请尝试使用JaCoCo

答案 1 :(得分:0)

开始进行单元测试的一个更好的方法是决定你希望代码做什么,然后编写测试以确保它完成这些工作,并且只需编写代码。理想的单元测试将有一个测试用例,涵盖每行代码,每个if语句和边缘情况,而Eli Sadoff提供的答案几乎涵盖了这些案例。