[英]Write Junit test cases for core Java application
我有 BMI 計算器 java 應用程序,它可以計算用戶的 BMI 以了解他/她當前的體重,該程序將使用公制 (kg/m) 和英制 (lb/in) BMI 公式,得到結果后,用戶將知道他/她的 BMI 類別(體重過輕、肥胖、超重或正常)。
我需要為這個應用程序編寫 Junit 測試用例,它的源代碼如下所示。 任何人都可以幫我為這個 class 編寫 Junit 測試用例嗎?
public class MainSrc {
final static double KG_TO_LBS = 2.20462;
final static double M_TO_IN = 39.3701;
private static DecimalFormat TWO_DECIMAL_PLACES = new DecimalFormat(".##");
public static void main(String[] args) {
double height, weight;
System.out.println("The BMI Calculator by iasjem");
System.out.println();
Scanner askUser= new Scanner(System.in);
System.out.println("What is your weight (kg)?");
weight = askUser.nextDouble();
System.out.println("What is your height (m)?");
height = askUser.nextDouble();
System.out.println();
System.out.println("Your body weight is:");
System.out.println("In Metric units: " + TWO_DECIMAL_PLACES.format(metricFormula(height, weight)) + " kg");
System.out.println("In Imperial units: " + TWO_DECIMAL_PLACES.format(imperialFormula(height, weight)) + " lbs");
System.out.println("As a result, you are " + getCategory(metricFormula(height, weight)));
askUser.close();
System.exit(0);
}
// THE METRIC FORMULA
public static double metricFormula(double m, double kg) {
double result=0;
result = kg / (Math.pow(m, 2));
return result;
}
// THE IMPERIAL FORMULA
public static double imperialFormula(double m, double kg) {
double result=0;
// convert kg to lbs and m to in
double lbs = Math.round(kg * KG_TO_LBS);
double in = Math.round((m * M_TO_IN) *100);
result = (lbs / (Math.pow((in/100), 2)))* 703;
return result;
}
// THE BMI CATEGORIES
public static String getCategory (double result) {
String category;
if (result < 15) {
category = "very severely underweight";
} else if (result >=15 && result <= 16) {
category = "severely underweight";
} else if (result >16 && result <= 18.5) {
category = "underweight";
} else if (result >18.5 && result <= 25) {
category = "normal (healthy weight)";
} else if (result >25 && result <= 30) {
category = "overweight";
} else if (result >30 && result <= 35) {
category = "moderately obese";
} else if (result >35 && result <= 40) {
category = "severely obese";
} else {
category ="very severely obese";
}
return category;
}
}
查看代碼,您可以使用 Diffblue Cover 等工具為您生成測試。 有一個免費的在線版本會為此代碼生成測試,例如這里有幾個為 get category 方法生成的測試:
// Test written by Diffblue Cover.
@Test
public void getCategoryInputPositiveOutputNotNull6() {
// Act and Assert result
Assert.assertEquals("severely obese", MainSrc.getCategory(36.0));
}
// Test written by Diffblue Cover.
@Test
public void getCategoryInputPositiveOutputNotNull5() {
// Act and Assert result
Assert.assertEquals("very severely obese", MainSrc.getCategory(240.0));
}
如評論中所述。 如果您需要有關如何為此代碼編寫單元測試的更多信息,請提供一些您已編寫但未運行的測試的具體示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.