我有一个课程如下:
class ToTest {
private MemberOne memberOne;
private MemberTwo memberTwo;
public ToTest(ParamOne paramOne, ParamTwo paramTwo) {
setMemberOne(paramOne);
setMemberTwo(paramTwo);
}
private setMemberOne(ParamOne paramOne) {
//Build the object.
}
private setMemberTwo(ParamTwo paramTwo) {
//build another object.
}
}
只能通过构造函数访问setter的原因是我不想在初始化后更改对象,因为memberOne
和memberTwo
之间存在依赖关系(示例可以是MemberOne
表示表头,MemberTwo
表示表中的数据,并保持编码简单,不受约束检查,如果列和数据集中的列数相等。
作为一种做法,我不会为私有方法编写测试用例。为本课程编写测试用例的好策略是什么。
答案 0 :(得分:2)
您可以将MemberOne
和MemberTwo
的建筑物提取到单独的班级。
private setMemberOne(ParamOne paramOne) {
memberOne = new MemberOneBuilder().buildFromParam(paramOne);
}
与
public class MemberOneBuilder {
public MemberOne buildFromParam(ParamOne paramOne) {
....
}
}
现在您可以轻松地单独测试构建过程。
答案 1 :(得分:0)
我可能会误解这一点,但是你不能使memberOne和memberTwo成为最终版本,然后将setMemberOne和setMemberTwo公开?然后你可以实例化memberOne和memberTwo,但它们将无法被更改。
答案 2 :(得分:0)
这似乎更像是一个假设的场景,而只是为了做到这一点,如果我们要编写这样的代码以及它的测试用例,在Unit-Test类中使用Reflection是唯一的出路在这里。