[英]Why does junit say my boolean test should be void?
我在谷歌搜索并点击链接后链接在许多不同的网站上,没有任何可用的答案帮助我。 这是不幸的,因为一些网站引用了相同的答案,我无法解决这个问题。 那个链接是( Junit测试一个布尔方法 )......
尝试运行测试的输出是:“方法testAddObject()应该是无效的。” 实际的方法是一个布尔方法,如果我将测试设置为void,我会得到一个不同的错误。 我不能随便让它无效。
我将使用代码片段。 首先是我的代码,然后是我的jUnit测试。
码:
public boolean add(Object ob) {
boolean isSuccessful = true;
/**
* if array is full, get new array of double size,
* and copy items from old array to new array
*/
if (isFull())
{
expandArray();
}
else if (!isFull())
{
// add new item; update numItems
items[numItems] = ob;
numItems++;
}
else
isSuccessful = false;
return isSuccessful;
} // end add
JUNIT测试:
@Test
public boolean testAddObject() {
boolean result = true;
boolean ans;
AList arraylist = new AList(3);
arraylist.add("apple");
arraylist.add("pear");
ans = arraylist.add("melon");
return ans == result;
}
所有JUnit测试方法都应该是无效的。 它在测试断言中确认您的代码是否产生了预期的输出。 对于您的场景, assertTrue
方法将检查您的方法的输出是否返回true
。
还有其他类型的断言,例如assertEquals
和assertFalse
。 有关不同类型断言的更多信息,请查看文档 。
所以你可以像这样修改你的测试用例
@Test
public void testAddObject() {
boolean ans;
AList arraylist = new AList(3);
arraylist.add("apple");
arraylist.add("pear");
ans = arraylist.add("melon");
assertTrue(ans);
}
其中assertTrue
检查ans是一个值为true
的布尔值
JUnit方法不能具有返回类型,因此您可以使用以下方法测试是否成功:
@Test
public void testAddObject() {
//Your data setup and invocation of the add method
assertTrue(ans == result);
}
如果你想要超过True / False,有很多断言选项,可以在这里找到它们: http : //junit.sourceforge.net/javadoc/org/junit/Assert.html
您可以使用assert方法检查您的测试方法add(object)。 assertEquals(预期结果,实际结果) assert方法有很多变种。
是的,您的测试方法应如下所示
@Test
public void testAddObject() {
// inside this method you should test add() method
// create input object(Object obj=new Object())
// create a instance of the class which has add()
// call add() method with obj
// validate return value
}
因为JUnit的工作方式是调用这些方法。 如果出现以下情况,这些方法将给予JUnit注意(标记为RED / Failed):
JUnit测试方法必须为返回类型的void。
请断言XXX以测试结果。
JUnit从其org.junit.internal.runners.MethodValidator
类内部调用validateTestMethods
,并验证例如返回类型是否为Void.TYPE
:
if (each.getReturnType() != Void.TYPE)
fErrors.add(new Exception("Method " + each.getName() + " should be void"));
因此,您必须使用void作为返回类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.