我是Java新手。我想测试计算器中可用的方法。什么是最有效的测试方法?
package BeginnerLevel;
import java.util.Scanner;
public class Calculator {
这是构造函数:
public Calculator(){
while (true){
System.out.println("Personal Calculator\n"+
"Addition---> 1 \n"+"Subtraction---> 2\n"+"Multiplication---> 3\n"+"Division---> 4\n"+"Exit--->0");
Scanner input = new Scanner(System.in);
int UsrIn= input.nextInt();
input.close();
switch (UsrIn){
case 1:
Addition();
break;
case 2:
Subtraction();
break;
case 3:
Multiplication();
break;
case 4:
Division();
break;
case 0:
break;
}
}
}
这些是在switch case中调用的方法。
添加方法:
private void Addition(){
Scanner input= new Scanner(System.in);
double total=0;
double firstnum=0;
double secondnum=0;
System.out.println("Enter Fist number: ");
firstnum= input.nextDouble();
System.out.println("Enter Fist number: ");
secondnum=input.nextDouble();
input.close();
total= firstnum + secondnum;
System.out.println("The result of Addition for "+ firstnum +" + "+secondnum+" is "+total);
}
减法方法:
private void Subtraction(){
Scanner input= new Scanner(System.in);
double total=0;
double first=0;
double second=0;
System.out.println("Enter First number ");
first=input.nextDouble();
System.out.println("Enter Second number ");
second=input.nextDouble();
total= first-second;
System.out.println("The result of Addition for "+ first +" + "+second+" is "+total);
input.close();
}
乘法方法:
private void Multiplication(){
Scanner input= new Scanner(System.in);
double total=0;
double first=0;
double second=0;
System.out.println("Enter First number ");
first=input.nextDouble();
System.out.println("Enter Second number ");
second=input.nextDouble();
total= first*second;
System.out.println("The result of Addition for "+ first +" + "+second+" is "+total);
input.close();
}
分区方法:
private void Division(){
Scanner input= new Scanner(System.in);
double total=0;
double first=0;
double second=0;
System.out.println("Enter First number ");
first=input.nextDouble();
System.out.println("Enter Second number ");
second=input.nextDouble();
total= first*second;
System.out.println("The result of Addition for "+ first +" + "+second+" is "+total);
input.close();
}
}
任何建议表示赞赏!
答案 0 :(得分:1)
您应该在程序中尝试Junit测试套件。 Junit 或者您可以使用调试模型来查明发生的情况。
答案 1 :(得分:1)
你的代码有点不对劲。而且,大多数“错误”与能够以系统方式进行测试困难的事情有关。
在良好的OO设计中,方法只能执行一项任务和一项任务。但是你的方法混合了多个任务:
你的构造函数构造函数更糟糕。构造函数应该构造/初始化一个对象。它不应该包含对象的“业务逻辑”。重构类,以便业务逻辑在方法中......然后实例化类并调用方法。
Ad @roomy指出,正确的测试方法是使用像JUnit这样的框架开发一套单元测试。但是,您的应用程序需要设计为 testable ...通过调用方法并检查它们是否产生正确的结果。
涉及输入和输出的测试更加困难,但只要您输入和输出流参数,就可以进行测试。另一种方法是创建一个“系统测试”,您可以在其中创建输入文件(或输入文件集)和相应的预期输出文件,使用每个输入运行程序并检查输出是否与预期输出匹配。提示:使用shell级文件重定向...
除了以上几点之外,还有一些错误可能会让你感到困惑:
您永远不应该使用以大写字母开头的方法名称。它违背了公认的Java风格......人们会抱怨你,并将你的风格标记停靠。
关闭System.in
等等,你需要非常小心。一旦它们关闭,您将无法重新打开它们,也不能读取/写入它们。
还要注意丢弃可能从底层输入源读取数据的扫描仪。