我有一类配对的void方法:每个方法都有一个等效的方法,它应该以不同的方式执行相同的操作。例如:
public void example1_1(){
Integer i = new Integer(1);
}
public void example1_2(){
Integer i = Integer.valueOf(11);
}
要么
public void example2_1(){
String result = "hello";
for (int i = 0; i < 10; i++) {
result += result;
}
}
public void example2_2(){
StringBuffer result = new StringBuffer("hello");
for(int i = 0; i < 10; i++) {
result += result;
}
}
如何测试方法实际上在对中执行相同的操作?
请注意,您没有任何返回值。这似乎是按计划进行的。
定义'做同样的方法'是非常困难的,你只考虑结果 - 如果是这样,为什么'无效'而不只是检查返回值?你的意思是表现明智吗?复杂明智吗?有很多级别的'相同' - 你可以要求的。
如果要验证某些方法在迭代中被调用N次,则可以使用Mockito验证方法 - 例如 - myMethod()仅被调用一次。
verify(myClass, times(1)).myMethod();
我强烈建议您使用返回值来验证结果是否相同。
在更广泛的方法中,人们可以争辩说OOP编程和接口方法的一部分具体是,只要它正确地执行,即只要方法返回,它与方法的作用并不重要。它应该是什么,内部实现是无关紧要的。您可以像我之前建议的那样使用单元测试来检查正确性,使用返回值和许多单元测试来验证各种输入的正确性