簡體   English   中英

Junit 測試 boolean 方法

[英]Junit testing for a boolean method

我在下面為這個方法編寫測試用例時遇到問題: EvenNum(double)

public class OddEven {

/**
 * @param args
 */

public boolean evenNum(double num)
{
    if(num%2 == 0)
    {
        System.out.print(true);
        return true;
    }
    else
    {
        System.out.print(false);
        return false;
    }

}

這是我寫的測試用例,但我認為我在這個測試用例中有一個 inheritance 問題或邏輯問題。 應該是一個非常簡單的,但無法弄清楚。 這是我寫的代碼:

import static org.junit.Assert.*;
import org.junit.Test;

public class OddEvenTest {
    @Test
    public void testEvenNum() {
        boolean ans = true;
        boolean val;
        double num= 6;

        val = OddEven.EvenNum(num) // cant inherit the method dont know why???

        assertEquals(ans,val);
    }

}

你有很多問題:

  • 您正在嘗試靜態調用非靜態方法
  • java 中的方法名稱區分大小寫,您混淆了大小寫。

我為您更正了一些事情,並驗證了以下代碼:

奇偶.java:

public class OddEven {

        public boolean evenNum(double num)
        {
            if(num%2 == 0)
            {
                System.out.print(true);
                return true;
            }
            else
            {
                System.out.print(false);
                return false;
            }

        }
}

奇偶測試.java

import static org.junit.Assert.*;
import org.junit.Test;

public class OddEvenTest {

    @Test
    public void testEvenNum() {
        boolean ans = true;
        boolean val;
        double num = 6;
        OddEven oddEven = new OddEven();

        val = oddEven.evenNum(num);
        assertEquals(ans,val);
    }

}

假設OddEven中對System.out.println()的調用嚴格用於調試,整個事情可以折疊成:

奇偶.java

public class OddEven {
    public boolean evenNum(double num) {
        return num%2 == 0;
    }
}

奇偶測試.java

import static org.junit.Assert.*;
import org.junit.Test;

public class OddEvenTest {

    @Test
    public void testEvenNum() {
        OddEven oddEven = new OddEven();
        assertTrue(oddEven.evenNum(6));
        assertFalse(oddEven.evenNum(5));
    }
}

代碼現在更短了,單元測試甚至涵蓋了一個奇怪的案例。

兩件事情:

  • 您正在靜態調用非靜態方法。 該方法應聲明為 static:

    公共static boolean evenNum(雙數){

    }

  • 您沒有正確鍵入方法的名稱。 仔細看。 還可以考慮將其重命名為更具可讀性的名稱,例如isEven(...)

這對我來說似乎測試發瘋了,編程也發瘋了。 該方法所做的只是評估 num % 2 == 0。您也可以只編寫隨處需要的代碼並丟棄該方法及其測試。 如果您必須保留該方法,它依賴於數學恆等式,您無需測試這些。 你也可以測試1+1==2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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