问题描述
我正在处理一个Java大项目,并且是Java的新手。我的任务是为某些代码正确的模拟单元测试。我已经了解了Mockito和Junit的基础知识,但是该项目相当大,我编写的代码对我不起作用。这是类结构
此文件位于ProjectName / src / com.package.packageName / ada /
中
// Car.java
public class Car{
private xyzClient xyzclient;
private Map<Long,Make> MPR; // Make is some legacy class
private static ConcurrentMap <Long,xyzClient> CMP = new ConcurrentHashMap<>();
public Car(final Map<Long,Make> MPR,final xyzClient xyzclient){
this.MPR = MPR
this.xyzclient = xyzclient
}
@Visible for testing
protected XYZ getClient (final long identification){
CMP.computeIFAbsent(identification,(id)->{
final Make make;
if MPR.containsKey(id){
make = MPR.get(id)
}
else{
make = AllConstants.allMap.get(ABC.getRegions().getyear())
//AllConstants is java file in constants folder which contains allMap hasmap which takes input from ABC.getRegions.getyear()
}
final XYZ ans = xyzclient.getInfo("fixedString",make)
return ans
});
return CMP.get(identification)
}
}
现在我的目标是为上述程序编写模拟测试用例。我尝试了以下几项。
public class CarTest{
private static final long identifcation = 1;
private static final String foo = 'foo'
@InjectedMocks
private Car car;
@Mock
private Map<Long,Make> MRP;
@Mock
Make make;
@Mock
xyzClient xyzclient;
@Mock;
XYZ xyz;
public void setUp() throws Exception {
MRP = new HashMap<>();
MRP.put(identification,new Make(foo))
MockitoAnnotations.initMocks(this)
car = new car(MRP,xyzClient)
}
public void testgetClient(){
when(MRP.containsKey(eq(identification))).thenReturn(true); //so that if branch is executed
doReturn(xyz).when(xyzClient.getInfo("someString",new Make('foo')))
car.getClient(1);
}
}
我的主要目的是测试程序,以便同时覆盖if和else的分支。那我该怎么办呢?另外,我该如何模拟包含allMap的Allcontants类,在此我将不胜感激,因为自上个星期以来我一直在努力解决这一问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)