我对junit mockito非常陌生,并尝试使用mockito编写junit测试用例。
这是我的方法,我必须为此编写一个jUnit。
public String getAllCookBooks(ChefService chefService, ChefApi chefApi) {
JSONObject cookBooks = null;
cookBooks = new JSONObject();
JSONArray array = null;
array = new JSONArray();
try {
if (null != chefService.listCookbookVersions()) {
LOG.debug(SuccessCode.COOKBOOK_DETAILS_RETRIEVED_SUCCCESS
.getSuccessCode()
+ "::"
+ SuccessCode.COOKBOOK_DETAILS_RETRIEVED_SUCCCESS
.getMessage());
for (CookbookVersion cookbookVersion : chefService
.listCookbookVersions()) {
JSONObject cookBooksDetails = new JSONObject();
cookBooksDetails.put("cookbook_name",
cookbookVersion.getCookbookName());
cookBooksDetails.put("cookbook_version",
cookbookVersion.getVersion());
cookBooksDetails.put("name", cookbookVersion.getName());
array.put(cookBooksDetails);
}
} else {
LOG.info("no cookbook present..."
+ ErrorCode.COOKBOOK_LIST_EMPTY_ERROR.getErrorCode()
+ " : "
+ ErrorCode.COOKBOOK_LIST_EMPTY_ERROR.getMessage());
cookBooks.put("error",
ErrorCode.COOKBOOK_LIST_EMPTY_ERROR.getMessage());
}
cookBooks.put("chef_cookbooks", array);
} catch (JSONException e) {
LOG.warn("JSON Exception "
+ ErrorCode.JSON_PARSE_ERROR.getErrorCode() + " "
+ ErrorCode.JSON_PARSE_ERROR.getMessage());
}
LOG.debug("cookbooks: " + cookBooks.toString());
LOG.info("Ended getAllCookBooks method");
return cookBooks.toString();
}
ChefService和ChefApi传递的方法参数来自第三方api
这里是呼叫chefService。listCookbookVersions()将返回CookBookVersion类类型的迭代器,如Iterable
请帮忙。
你要做的(很可能)是:
ChefService chefService = mock(ChefService.class); // create the mock
when(chefService.listCookbookVersions()).thenReturn(aListOfValues); // establish what would be returned on method call, in this case 'aListOfValues'
// you could do the same for chefApi
String result = getAllCookbooks(chefService, chefApi); // call you method
//assert something on the result
你不能传递任何信息。您明确地告诉框架,当调用这个特定调用时,将返回一些内容。
ChefService chefServiceMock = mock(ChefService.class);
// some reasonable, expected entry value
List<CookbookVersion> cookbookVersions = ...;
when(chefServiceMock.listCookbookVersions()).thenReturn(cookbookVersions);
// You're not actually using the API object, so you can pass in null.
// It'd be wiser to remove it altogether.
String actual = testObject.getAllCookBooks(chefServiceMock, null);
完成后,您需要确保它已被调用,因此您需要验证
调用。
// later
verify(chefServiceMock).listCookbookVersions();
然后,确保您验证了实际结果。我见过只验证模拟工作的测试,但实际生成的数据是垃圾。
确保它是您希望从API输入列表中接收的数据。
我正在为我的项目创建junit测试用例。我有下面的代码,我想在其中创建一个模拟, 我正在使用jUnit和mockito核心jar。我尝试了下面的代码, 使用上述代码,它在模拟loadProperties方法时抛出错误。如何模拟Spring静态类并返回我的模拟属性对象? 任何帮助都将不胜感激。
我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。
我正在使用Mockito编写一个JUnit测试用例,并得到一个NullPointerException。 在我的代码中是这样的:
下面是这个问题:我被要求从哪里开始一个新问题。 问题是我对JUnit了解不够,或者对等的了解不够,无法以Jeff Bowman提到的方式解决这个问题。
我认为自己是单元测试的新手,对McCito和JUnit完全陌生。我必须为一些简单的api调用编写单元测试。但我的测试对我来说似乎有点毫无意义,我不知道我哪里出了问题。我向现有的web服务ManagerWS添加了一个方法。java,见下文。 经理。java方法: 逻辑很简单。构造url,创建标头并将标头添加到请求中。发出请求并从响应中提取状态代码。这是我的测试。注意:类使用@RunAnd(Sprin
我能够测试代码,但代码覆盖率不包括第二个开关情况。 请参考以下代码。 下面是我的测试代码。 由于我已经声明了一个带有测试值的字符串变量,所以我无法涵盖第二个switch语句。我尝试过if else的情况,但同样的问题发生了。我们还有别的办法吗?