我的Junit测试应该检查返回的数字是否与列表大小相同
如果我的测试如下,这将被正确编码,我觉得这不是因为我最后2行总是如此?
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = list.size();
assert size == list.size();
}
答案 0 :(得分:3)
您可以测试,例如,列表创建时列表是否为空(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
)时,您应该考虑如何使用列表(测试场景)。例如,
答案 1 :(得分:3)
assert
是一种不在测试中使用的java语言功能。它仅使用运行时选项-ea
进行评估!如果没有该选项,您的代码将无需测试!请使用junit.framework.Assert
的{{1}}方法。
另一方面,我不确定,您的测试应该测试什么。 list.size()始终是list.size()。你应该断言一个数字。你也不需要测试ArrayList - 它的工作原理。你要测试的代码在哪里?
答案 2 :(得分:1)
当然,您的测试需要先做一些事情,即触发您正在测试的代码以填充Pilot对象的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());
}
...否则你只是没有测试任何东西。
答案 3 :(得分:0)
我不会说你的测试是正确的。
public void testGetTotalPilots() {
ArrayList<Pilot> list = new ArrayList<Pilot>();
int size = 0;
assert size == list.size();
}
上述更改将确保您的测试始终为零,因为预期结果显示。如果它不为零则测试将失败。
答案 4 :(得分:0)
您在这里测试的是ArrayList。为什么?我认为花时间测试Java附带的类的基本功能并且广泛使用它们并不是特别有用。
查看测试的名称,此测试应该从其他地方获取列表,然后测试关于飞行员列表的假设。
的内容List<Pilot> pilots = pilotDao.getAll();
assert pilots.size() == 0;
Pilot newPilot = new Pilot();
pilotDao.addPilot(newPilot );
pilots = pilotDao.getAll();
assert pilots.size() == 1;
assert pilots.get(0).equals(newPilot);
或者,正如我在你的另一篇文章中所说,做到这一点;
列表pilots = pilotDao.getAll();
pilots.add(新飞行员)
然后检查是否发生了对此的正确反应,即如果您不希望人们修改列表或随后调用pilotDao.getAll();
返回大小为1的列表,则会引发异常。