簡體   English   中英

為核心 Java 應用程序編寫 Junit 測試用例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM