【问题标题】:How to test my program from the main method JAVA如何从主要方法 JAVA 测试我的程序
【发布时间】:2023-03-15 23:41:01
【问题描述】:

我是 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();

} 

}

感谢任何推荐!

【问题讨论】:

  • 您应该研究一下 java 中有哪些类型的测试可用,例如 jUnit 测试。显示您的代码将无济于事。你在测试什么等等。“这是我的方法”不是很有帮助

标签: java testing methods main main-method


【解决方案1】:

您应该在您的程序中试用 Junit 测试套件。 Junit 或者您可以使用调试模型来找出发生了什么。

【讨论】:

    【解决方案2】:

    您的代码有很多错误。很多“错误”都与使系统测试困难的事情有关。

    在良好的 OO 设计中,一个方法将执行一项任务且仅执行一项任务。但是你的方法混合了多个任务:

    • 请求和读取参数,
    • 执行算术运算,
    • 打印结果。

    你的构造器构造器就更糟了。构造函数应该构造/初始化一个对象。它不应包含对象的“业务逻辑”。重构类,使业务逻辑在方法中……然后实例化类并调用方法。

    Ad @roomy 指出,进行测试的正确方法是使用 JUnit 之类的框架开发一套单元测试。但是您的应用程序需要设计为可测试 ...通过调用方法并检查它们是否产生正确的结果。

    涉及输入和输出的测试比较困难,但如果您设置输入和输出流参数,则可以。另一种选择是创建一个“系统测试”,您可以在其中创建一个输入文件(或一组输入文件)和相应的预期输出文件,使用每个输入运行程序并检查输出是否与预期输出匹配。提示:使用 shell 级别的文件重定向 ...


    除了以上几点之外,还有几个错误可能会咬你:

    1. 永远不要使用以大写字母开头的方法名。它违背了公认的 Java 风格......人们会抱怨你,并扣掉你的风格标记。

    2. 关闭System.in 等时需要非常小心。一旦它们关闭,您将无法重新打开它们,也无法读取/写入它们。

    3. 还要注意丢弃可能已从底层输入源预读数据的扫描器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 2017-06-17
      相关资源
      最近更新 更多