我的JUnit测试应该检查返回的数量是一样的列表大小的JUnit返回int值
如果我的测试结果如下请问这是正确编码,我觉得它不是因为我最后两行总会是真的吗?
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = list.size();
assert size == list.size();
}
我的JUnit测试应该检查返回的数量是一样的列表大小的JUnit返回int值
如果我的测试结果如下请问这是正确编码,我觉得它不是因为我最后两行总会是真的吗?
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = list.size();
assert size == list.size();
}
我不会说你的测试是正确的。
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = 0;
assert size == list.size();
}
上面的变化将确保您的测试总是会为零,因为看起来像预期的结果。如果它不是零,那么测试将失败。
你可以测试,例如,列表是否为空(大小== 0)时,该列表的创建:
ArrayList<Pilot> list = new ArrayList<Pilot>();
assertEquals(0, list.size());
// or: assertTrue(list.isEmpty());
和/或你可能有些条目添加到列表中,检查是否列表的大小相应地设置:
list.add(pilot1);
list.add(pilot2);
assertEquals(2, list.size());
编辑:
当单元测试列表(ArrayList
),你应该想想该列表可以如何使用(测试场景)。例如,
当然你的测试首先需要做的事情,即触发您正在测试填充试点对象的ArrayList中的代码?所以,你会按如下方式编码你的测试:
public void testGetTotalPilots()
{
ArrayList<Pilot> list = new ArrayList<Pilot>();
// Invoke the code that populates the Pilot list
int size = 3; // Set this to the expected number
assertEquals(size, list.size());
}
......否则你只是没有测试任何东西。
是的,原始问题只是测试Java ArrayList API是否工作正常 - 假设它可能是安全的。 – cyborg 2009-12-21 09:38:00
你在这里测试的是ArrayList。为什么?我认为花时间测试Java附带的类的基本功能并且它们被广泛使用并不是特别有用。
看着测试的名字,这个测试应该从其他地方得到列表,然后测试关于飞行员列表的假设。或者,正如我在你的其他文章中所说的那样, List pilots = pilotDao.getAll(); pilots.add(新Pilot) 然后检查是否对此发生了正确的反应,例如,如果不希望人们修改列表或随后调用pilotDao.getAll();
返回大小为1的列表,则会引发异常。
assert
是不能在测试中使用的Java语言功能。它仅通过运行时选项-ea
进行评估!没有这个选项,你的代码不会测试请使用junit.framework.Assert
的方法,如assertEquals()
。
另一方面,我不确定,你的测试应该测试什么。 list.size()总是list.size()。你应该断言一个数字。你也不需要测试ArrayList - 它可以工作。你的代码在哪里测试?
这可能适用于JUnit,但还有其他测试框架。例如,在TestNG中,断言是声明断言的首选方式,请参阅http://testng.org/doc/documentation-main.html#success-failure – 2009-12-21 09:48:35
问题始于“我的Junit测试”。另外TestNG还有一个自己的断言类(org.testng.Assert),文档中还提供了断言来使测试工作。 – 2009-12-21 10:49:55
您正在使用错误的断言 - 这是内置的Java关键字,而不是Junit Assert类。应该是Assert.Equals(size,list.size()); – Paolo 2009-12-21 09:40:42
或者使用TestNG代替JUnit,其中使用'assert'有效 – 2009-12-21 09:53:26