[英]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);
}
}
你有很多問題:
我為您更正了一些事情,並驗證了以下代碼:
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;
}
}
}
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()
的調用嚴格用於調試,整個事情可以折疊成:
public class OddEven {
public boolean evenNum(double num) {
return num%2 == 0;
}
}
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.