编写一个单元测试来检查该方法未返回的变量



下面是我要测试的代码段:正在设置生成器值,但不会返回该值。请给我一个测试以下方法的方法。

public String convertMarkup(request)
{
Builder builder = new Response.builder(); 
String markUpData;
Map<String,List<String>>collectUrls= collectUrlMethod(request);

if(MapUtils.isNotEmpty(collectUrls)){
builder.setTrackerValue(collectUrls.get(Final_value).get(0));
builder.build(); 
}else{
markUpData="abc"; 
// rest of the code  
}

return markUpData; 
}

尝试通过在输入请求中引入一个新变量并设置该变量而不是使用新的生成器来更改代码。奏效了。

public String convertMarkup(requestContext)  {
Builder builder = new Response.builder(); 
String markUpData;
Map<String,List<String>>collectUrls= collectUrlMethod(request);
if(MapUtils.isNotEmpty(collectUrls)){
requestContext.setTrackerValue(collectUrls.get(Final_value).get(0));
}else{
markUpData="abc"; 
// rest of the code  
}

return markUpData;   }

builder实际上并没有被使用,除非调用builder.build()有一些副作用,这将是糟糕的设计,所以你不必测试它,事实上你也不应该测试它。

";单位";您正在测试的是convertMarkup()方法,您通过给它输入并断言它的输出来测试它——仅此而已。方法中的任何内容都是实现的选择,并且可以随时更改,所以您的单元测试不应该依赖于它

例如,开发人员可能会将实现更改为:

public String convertMarkup(requestContext) {
return someExternalService.convertMarkup(requestContext);
}

之后,所有的测试仍然应该编译并通过(当然,假设外部服务正常工作(。

代码覆盖率是另一回事。项目应该设置一个最小的代码覆盖率,这可能需要更多的单元测试来行使足够的代码路径,但无论如何,它们都可能是有效的单元测试边缘案例。

最新更新