为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Junit测试工具测试void方法?

/ 猿问

如何使用Junit测试工具测试void方法?

MYYA 2019-11-19 15:41:50

我只是碰巧实现了一种void followlink(obj page,obj link)简单地添加页面和链接到队列的方法。我尝试测试这种方法未成功。

我只想测试队列中是否包含从followlink方法接收的页面和链接。我的测试课程已经扩展了TestCase。那么,测试这种方法的最佳方法是什么?


查看完整描述

3 回答

?
牧羊人nacy

该JUnit FAQ中对测试方法返回一个部分void。对于您的情况,您想测试所调用方法的副作用。


常见问题解答中给出的示例测试Collection添加项目后更改的大小。


@Test

public void testCollectionAdd() {

    Collection collection = new ArrayList();

    assertEquals(0, collection.size());

    collection.add("itemA");

    assertEquals(1, collection.size());

    collection.add("itemB");

    assertEquals(2, collection.size());

}


查看完整回答
反对 回复 2019-11-19
?
aluckdog

如果在调用方法前后的队列中可以测试大小,例如:


int size = queue.length();

followLink(page, link);

assertEquals(size+1, queue.length()); // or maybe size+2?

您可能要做的另一件事是从一个空队列开始,调用followLink,然后使第一个项目出队并测试其值。


查看完整回答
反对 回复 2019-11-19
?
月关宝盒

您的队列很可能是私有队列,因此无法检查大小。我见过的“测试设计”解决方案是改用包私有方法和成员。由于您的junit测试可能位于同一软件包中,因此它们将具有访问权限。


这本身就使“ queue.length() ”副作用测试起作用。


但我会走得更远:确实,您应该考虑检查您的方法是否插入了正确的页面并链接到您的队列。细节需要更多有关您如何表示(和组合)页面和链接的知识。


该JMock的解决方案也很不错,虽然事实上我更熟悉,写我自己的测试工具。


查看完整回答
反对 回复 2019-11-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信