JUnit返回int值

时间:2009-12-21 09:23:06

标签: java testing junit

我的Junit测试应该检查返回的数字是否与列表大小相同

如果我的测试如下,这将被正确编码,我觉得这不是因为我最后2行总是如此?

public void testGetTotalPilots() {
    ArrayList<Pilot> list = new ArrayList<Pilot>();
    int size = list.size();

    assert size == list.size();
}

5 个答案:

答案 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(之后)
  • 当列表包含一个项目时,删除此项目应该会产生一个空列表
  • 等......

答案 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的列表,则会引发异常。