java 单元测试 私有成员变量,公开私有方法以对其进行单元测试……好主意?

注意:

此答案最初是针对以下问题而发布的:单独进行单元测试是否是通过getter公开私有实例变量的充分理由?它已合并到此示例中,因此可能是针对此处显示的用例的一点点。

一般而言,我通常都会重构“生产”代码以使其更易于测试。但是,我认为这不是一个好电话。一个好的单元测试(通常)通常不必关心类的实现细节,而只关心其可见行为。不必将内部堆栈暴露给测试,而是可以测试该类在调用first()或之后以您期望的顺序返回页面last()。

例如,考虑以下伪代码:

public class NavigationTest {

private Navigation nav;

@Before

public void setUp() {

// Set up nav so the order is page1->page2->page3 and

// we've moved back to page2

nav = ...;

}

@Test

public void testFirst() {

nav.first();

assertEquals("page1", nav.getPage());

nav.next();

assertEquals("page2", nav.getPage());

nav.next();

assertEquals("page3", nav.getPage());

}

@Test

public void testLast() {

nav.last();

assertEquals("page3", nav.getPage());

nav.previous();

assertEquals("page2", nav.getPage());

nav.previous();

assertEquals("page1", nav.getPage());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值