gpt4 book ai didi

java - 使用 junit 测试带有 switch case 的程序

转载 作者:行者123 更新时间:2023-11-29 08:43:46 25 4
gpt4 key购买 nike

我想在 junit 中为计算器程序编写测试用例。我是 junit 环境的新手。我可以为其他程序编写测试,但有点坚持测试 switch() 案例。

我真的很想知道怎么做。

提前致谢

这是我的程序

 import java.util.Scanner;

//This program performs basic math operations such as :- +,-,*,/
public class Calculator

{
public static void main(String[] args)

{
double number1, number2;
String Mathoperation;
Scanner scannerObject = new Scanner(System.in);

System.out.println("Enter first number");
number1 = scannerObject. nextDouble();

System.out.println("Enter second number");
number2 = scannerObject. nextDouble();

Scanner UserInput = new Scanner(System.in);
System.out.println("\nHere are your options:");
System.out.println("\n1. Addition, 2. Subtraction, 3. Divison, 4. Multiplication");
Mathoperation = UserInput.next();

switch (Mathoperation)
{
case "1":
System.out.println("Your answer is " + (number1 + number2));
break;

case "2":
System.out.println("Your answer is " + (number1 - number2));
break;

case "3":
System.out.println("Your answer is " + (number1 / number2));
break;

case "4":
System.out.println("Your asnwer is " + (number1 * number2));
break;

default:
System.out.println("");
}
}

}

最佳答案

编写单元测试的第一步是编写可测试的代码。此时你的代码不是很可测试,也就是说你可以测试它但它不会是最好的测试。让我们来看看原因。

第一个原因是您的所有代码都在主函数中。你通常想避免这种情况。这有多种原因,但我认为最大的两个原因是可读性和可重用性。通常你会想把东西放到不同的类中,但为了时间的缘故,我们将简单地将你的数学开关放入它自己的函数中。

import java.util.Scanner;

//This program performs basic math operations such as :- +,-,*,/
public class Calculator

{
public static void main(String[] args)

{
double number1, number2;
String Mathoperation;
Scanner scannerObject = new Scanner(System.in);

System.out.println("Enter first number");
number1 = scannerObject. nextDouble();

System.out.println("Enter second number");
number2 = scannerObject. nextDouble();

Scanner UserInput = new Scanner(System.in);
System.out.println("\nHere are your options:");
System.out.println("\n1. Addition, 2. Subtraction, 3. Divison, 4. Multiplication");
Mathoperation = UserInput.next();
doMath(Mathoperation, number1, number2)
}

public double doMath(String Mathoperation, double number1, double number2){
switch (Mathoperation)
{
case "1":
System.out.println("Your answer is " + (number1 + number2));
break;

case "2":
System.out.println("Your answer is " + (number1 - number2));
break;

case "3":
System.out.println("Your answer is " + (number1 / number2));
break;

case "4":
System.out.println("Your asnwer is " + (number1 * number2));
break;

default:
System.out.println("");
}
}
}

好的,现在我们有了自己的数学运算方法。一个问题。这本身不是一个单元,这实际上是加法和我们的数学运算之间的集成。这意味着,为了进行测试,我们需要测试每个算术组合(加、减、除、乘),以及该方法是否选择了正确的运算符。那比我们想要的要多得多,而且不是一个很好的测试,那么我们如何解决这个问题呢?很简单,我们进一步分解

import java.util.Scanner;

//This program performs basic math operations such as :- +,-,*,/
public class Calculator {
//Code for use input somewhere here
public double doMath(String Mathoperation, double number1, double number2){
switch (Mathoperation)
{
case "1":
System.out.println("Your answer is " + add(number1, number2));
break;

case "2":
System.out.println("Your answer is " + sub(number1, number2));
break;

case "3":
System.out.println("Your answer is " + div(number1, number2));
break;

case "4":
System.out.println("Your answer is " + mul(number1, number2));
break;

default:
System.out.println("");
}
}
public double add(double number1, double number2){
return number1 + number2;
}
public double sub(double number1, double number2){
return number1 - number2;
}
public double mul(double number1, double number2){
return number1 * number2;
}
public double div(double number1, double number2){
return number1 / number2;
}
}

现在我们的单位更容易分解。您可以从这里为您的 addsubdivmul 函数编写测试。很好地测试这些以确保它们按预期运行。然后为 doMath 函数编写测试以确保它将值传递给正确的操作。通过这种方式,当出现故障时,您可以确切地知道它的故障位置和问题所在,而不必猜测。您会知道 doMath 是否有问题,或者您的其他数学方法是否有问题。它还允许您更轻松地将您的方法重用于其他事情,所以双赢

关于java - 使用 junit 测试带有 switch case 的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com