我有一个返回String
的简单方法。
它还会创建一个本地List
。我想测试添加到本地List
的值。
这是一个例子
package com.impl;
import java.util.ArrayList;
import java.util.List;
import com.test.domain.CustomerVo;
public class ClassImpl {
public String assignGift(CustomerVo customerVo) {
List<String> listOfGift = new ArrayList<String>();
if (customerVo.getName().equals("Joe")) {
listOfGift.add("ball");
} else if ((customerVo.getName().equals("Terry"))) {
listOfGift.add("car");
} else if (customerVo.getName().equals("Merry")) {
listOfGift.add("tv");
}else {
listOfGift.add("no gift");
}
return "dummyString";
}
}
如何将customerVo.getName.equals("Terry")
,car
添加到本地List
时,我该如何测试。
答案 0 :(得分:3)
这并不容易。
您需要使用类似powermock的内容。
使用powermock,你创建一个场景然后调用方法并播放它,这意味着你可以告诉ArrayList
类构造函数预期被调用并返回mock
而不是真实{ {1}}。
这将允许您在ArrayList
上声明。
这样的事情应该有效:
mock
因此,当您的方法创建本地ArrayList listMock = createMock(ArrayList.class);
expectNew(ArrayList.class).andReturn(listMock);
powermock时,实际上会返回您的模拟List
。
更多信息here。
这种模拟实际上是对未编写为可测试的遗留代码的单元测试。如果可以的话,我强烈建议重写代码,以便不需要进行这种复杂的模拟。