我在下面的方法中编写测试用例时遇到问题: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;
}
}
这是我写的测试用例,但我认为在这个测试用例中我有一个继承问题或逻辑问题。应该是一个非常简单的但无法弄清楚。这是我写的代码:
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);
}
}
答案 0 :(得分:7)
您有很多问题:
我为您纠正了一些问题,只是验证了以下代码:
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);
}
}
假设System.out.println()
中对OddEven
的调用仅限于调试,整个事情可能会崩溃为:
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));
}
}
现在代码更短了,单元测试甚至涵盖了一个奇怪的情况,以便进行测量。
答案 1 :(得分:6)
两件事:
您正在静态调用非静态方法。该方法应声明为static:
public static boolean evenNum(double num){
}
您没有正确输入方法的名称。仔细看。另外,请考虑将其重命名为更可读的内容,例如isEven(...)
答案 2 :(得分:0)
这似乎是测试疯了我,和编程走火入魔了。所有方法都是评估num%2 == 0.您可能只需要在任何地方需要的代码并丢弃方法及其测试。如果你必须保留方法,它依赖于数学身份,你不需要测试它们。你也可以测试1 + 1 == 2。