所以我的问题是我需要为这段代码编写一个 junit 测试,但我无法做到。代码的作用是,根据输入给出评分。
import java.util.Scanner;
public class Grade{
static void getNumericGrade(){
Scanner input = new Scanner(System.in);
System.out.print("Enter numeric grade: ");
double numGrade = input.nextDouble();
String letterGrade;
/**
* Method creation to convert numeric grade or GPA to letter grade
* @param numGrade is GPA
*/
if (numGrade > 4.00 || numGrade < 0) {
letterGrade = "N";
}
else if (numGrade >= 3.85 && numGrade <= 4.0 )
{
letterGrade = "A+";
}
else if (numGrade >= 3.5 && numGrade < 3.85 )
{
letterGrade = "A";
}
else if (numGrade >= 3.333 && numGrade < 3.5 )
{
letterGrade = "A-";
}
else if (numGrade >= 3.0 && numGrade < 3.333 )
{
letterGrade = "B+";
}
else if (numGrade >= 2.667 && numGrade < 3.0 )
{
letterGrade = "B";
}
else if (numGrade >= 2.333 && numGrade < 2.667 )
{
letterGrade = "B-";
}
else if (numGrade >= 2.0 && numGrade < 2.333 )
{
letterGrade = "C+";
}
else if (numGrade >= 1.667 && numGrade < 2.0 )
{
letterGrade = "C";
}
else if (numGrade >= 1.333 && numGrade < 1.667 )
{
letterGrade = "C-";
}
else if (numGrade >= 1.0 && numGrade < 1.333 )
{
letterGrade = "D+";
}
else if (numGrade > 0 && numGrade < 1.0 )
{
letterGrade = "D";
}
else {
letterGrade = "F";
}
if (letterGrade.equalsIgnoreCase("N")){
System.out.println(numGrade + " is not a valid grade" + letterGrade);
}
else{
System.out.println("Your grade is " + letterGrade);
}
}
public static void main(String[] args) {
/**
* Prints letter grade from GPA
* @return letterGrade
*/
getNumericGrade();
}
}
最佳答案
更改函数 getNumericGrade()
以获取参数而不是从扫描仪读取输入,并返回输出而不是在控制台上打印:
static String getNumericGrade(double numGrade) {
double numGrade = input.nextDouble();
String letterGrade;
/**
* Method creation to convert numeric grade or GPA to letter grade
* @param numGrade is GPA
*/
if (numGrade > 4.00 || numGrade < 0) {
letterGrade = "N";
}
...
return letterGrade;
}
更改您的main
,以便您从扫描仪获取输入并将其打印在屏幕上:
Scanner input = new Scanner(System.in);
System.out.print("Enter numeric grade: ");
double numGrade = input.nextDouble();
String letterName = getNumericGrade(numGrade);
if (letterGrade.equalsIgnoreCase("N")){
System.out.println(numGrade + " is not a valid grade" + letterGrade);
}
else{
System.out.println("Your grade is " + letterGrade);
}
...然后像这样轻松测试包含逻辑的方法:
@Test
public void exampleTest() {
double testInput = 4.5;
String grade = Grade.getNumericGrade(testInput);
assertEquals("expected grade", grade);
}
//more test with more inputs
注意:由于该函数实际上采用 double 值并始终返回一个字符串,因此您可以编写一个单元测试并将其参数化。
关于java - 如何为这段java代码编写Junit测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70627367/