【发布时间】:2017-12-26 14:43:20
【问题描述】:
我有一类成对的 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;
}
}
如何测试方法实际上是否成对执行相同的操作?
【问题讨论】:
-
从理论的角度来看,如果两个程序计算相同的函数(通常)是不确定的。而您的示例函数除了浪费时间之外没有做任何事情。没有返回结果或任何其他副作用。
-
您无法跟踪某个方法执行的操作,因为您没有结果,它是否与另一种方法相似。您的两种方法的工作“结果”都没有存储在任何地方,因此您无法预测它们是否真的被执行了。编译器甚至可能将它们从字节码中丢弃。