测试使用不同参数类型调用相同 class 的类似方法的方法的最佳实践是什么?
What are best practices for testing methods which call similar method of same class with different parameter types?
测试方法的最佳实践是什么,该方法调用具有不同参数类型的相同 class 的类似方法?
是否应该模拟一个实例?等等
你有当前的示例或解决方案吗?
我对案例的最佳实践感兴趣,当测试的方法更多时,
超过 1 行并复制测试代码以测试 class 是有问题的。
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));
}
}
合理的做法:
- first focus 你对 really 做的那个方法的测试 "do the work" (在你的例子中,那将是第一个版本)。您想了解该方法的public 契约 并深入测试
- 然后,然后查看那些 other 方法,这些方法只是 "wrap" 围绕已经经过良好测试的方法。
对于后面的方法,您只是想测试这个方法在做什么。在您的示例中,这意味着:您确保传入的字符串进入 Y.parse().
我会认为 不好 实践来测试你的第二种方法与你应该应用于第一种方法相同的审查。
您的测试应该关注方法所负责的 "work"。在您的示例中,第一种方法负责某些 "real business stuff";而第二种方法(表面上)只负责转换一个参数并调用另一个方法。
意思是:当你对第一个方法 put(String, Y)
进行了 5 次测试(测试该方法中的所有不同路径)时 - 你可能只需要对方法 put(String, String)
进行一次测试(它只是检查由于 put(String, String)
正在做的事情,put(String, Y)
中的一些预期路径被采用)。
长话短说:
- 当方法执行时 "real business" - 测试 "real business"
- 当该方法仅涉及 plumbing/gluing 事物时 - 然后专注于该方面 - 而不是重新测试获得 "wrapped around"
的事物
测试方法的最佳实践是什么,该方法调用具有不同参数类型的相同 class 的类似方法?
是否应该模拟一个实例?等等
你有当前的示例或解决方案吗?
我对案例的最佳实践感兴趣,当测试的方法更多时, 超过 1 行并复制测试代码以测试 class 是有问题的。
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));
}
}
合理的做法:
- first focus 你对 really 做的那个方法的测试 "do the work" (在你的例子中,那将是第一个版本)。您想了解该方法的public 契约 并深入测试
- 然后,然后查看那些 other 方法,这些方法只是 "wrap" 围绕已经经过良好测试的方法。
对于后面的方法,您只是想测试这个方法在做什么。在您的示例中,这意味着:您确保传入的字符串进入 Y.parse().
我会认为 不好 实践来测试你的第二种方法与你应该应用于第一种方法相同的审查。
您的测试应该关注方法所负责的 "work"。在您的示例中,第一种方法负责某些 "real business stuff";而第二种方法(表面上)只负责转换一个参数并调用另一个方法。
意思是:当你对第一个方法 put(String, Y)
进行了 5 次测试(测试该方法中的所有不同路径)时 - 你可能只需要对方法 put(String, String)
进行一次测试(它只是检查由于 put(String, String)
正在做的事情,put(String, Y)
中的一些预期路径被采用)。
长话短说:
- 当方法执行时 "real business" - 测试 "real business"
- 当该方法仅涉及 plumbing/gluing 事物时 - 然后专注于该方面 - 而不是重新测试获得 "wrapped around" 的事物