测试使用不同参数类型调用相同类的相似方法的方法的最佳实践是什么?

时间:2017-07-13 11:54:54

标签: java unit-testing testing junit coding-style

测试方法的最佳实践是什么,它调用具有不同参数类型的相同类的类似方法?

是否应该嘲笑某个实例?等

您有现有的示例或解决方案吗?

我对案例的最佳实践感兴趣,当测试方法更多时, 超过1行并将测试代码复制到测试类是有问题的。

class A {
  Map z = //...
  public void put(String x, Y y) {
    z.put(x, y);
  }
  public void put(String x, String y) {
    put(x, Y.parse(y));
  }
}

1 个答案:

答案 0 :(得分:3)

合理的方法:

  • 首先关注您对该方法的测试真的做"做的工作" (在您的示例中,这将是第一个版本)。您希望了解该方法的公开合同并进行密集测试
  • 然后,看看那些其他方法,简单地"包装"围绕那个已经经过充分测试的方法。

对于后面的方法,要测试此方法的作用。在您的示例中,这意味着:确保传入的字符串进入Y.parse()。

我会考虑糟糕的练习,用你应该应用于第一种方法的相同审查来测试你的第二种方法。

你的测试应该关注那些"工作"方法负责。在您的示例中,第一种方法负责一些"真实业务的东西&#34 ;;而第二种方法(表面上)只负责转换参数和调用另一种方法。

含义:当您对第一个方法put(String, Y)进行5次测试时(测试该方法中的所有不同路径) - 您可能只需要对方法put(String, String)进行1次测试(这只是检查一些预期的方法) put(String, Y)中的路径因put(String, String)正在做的事情而被采用。

TL; DR:

  • 当一种方法正在做"真正的业务" - 测试"真正的业务"
  • 当这个方法只是关于管道/粘合在一起的东西 - 然后专注于那个方面 - 而不是重新测试得到的东西""
相关问题