я использую EclEmma и пытается увеличить свое тестовое покрытие:написание тест JUnit случае для вызова метода
до сих пор это мой код:
public RolesResponse findRolesByTenant(RolesRequest rolesRequest)
{
RolesResponse rolesResponse = new RolesResponse();
List<Role> roleList = null;
if (StringUtils.isNotBlank(rolesRequest.getTenantCode()))
{
roleList = roleFunctionService.getAllRolesAndFunctionsByTenant(rolesRequest.getTenantCode());
}
if (CollectionUtils.isNotEmpty(roleList))
{
rolesResponse.setRoles(roleList);
}
else
{
rolesResponse.setError(LayerContextHolder.getErrorObject());
}
return rolesResponse;
}
и вот мой тест:
@Test
public void findRolesByTenantTest()
{
RolesRequest rolesRequest = new RolesRequest();
rolesRequest.setTenantCode("test");
ErrorObject errorObject = new ErrorObject();
RolesResponse rolesResponse = rolesProcessService.findRolesByTenant(rolesRequest);
Assert.assertNull(rolesResponse.getError());
}
единственная линия EclEmma выдвигает на первый план в красном это одна:
rolesResponse.setError(LayerContextHolder.getErrorObject());
может кто-то помочь мне в построении окончательного теста, необходимого для покрытия этой линии
благодаря
Пара предложений в дополнение к этим хорошим комментариям @Makoto. 1) Посмотрите, можете ли вы писать тесты перед тестируемым кодом - это должно помочь вам с вашим дизайном. 2) Мне нравятся имена моих методов тестирования, чтобы объяснить, что тестируется, и поскольку это документация, я оставляю здесь соглашение об именах Java. Например, «should_cope_with_empty_role_list» может быть одним случаем. 3) Мне не нужен этот тип возврата, RolesResponse. Похоже, что это так, что вы можете приспособить либо успех, либо неудачу, с разными полями, заполненными в каждом случае. Упрощать! – unigeek
@Makoto, так что касается пункта 5. Я должен сделать assertNotNull или assertNull на этом. поэтому приносят извинения за код в комментариях, но Assert.assertNull (roleFunctionService.getAllRolesAndFunctionsByTenant (roleRequest.getTenantCode()) ?? как вы можете проверить наличие ошибки? есть что-то вроде assertError? – BlueShark
Вы будете извлекать контекст из объекта roleResponse, используя его геттеры для выполнения утверждений. Вы можете использовать 'assertTrue' для утверждения против полей на этом объекте. – Makoto