ключевое слово void
В этом разделе объясняется, как объявить и вызвать метод void.
В следующем примере объявляется метод с именем printGrade и вызывается его для печати заданной оценки.
Пример
общественный класс TestVoidMethod { public static void main(String[] args) { printGrade(78.5 } public static void printGrade (двойной балл) { if (оценка >= 90,0) { System.out.println('A'); else if (оценка >= 80,0) { System.out.println('B' } else if (оценка >=); 70.0) { System.out.println('C'); else if (оценка >= 60,0) { System.out.println('D' } else { System.out.println('F'); }}
Результаты компиляции и запуска приведенного выше примера следующие:
С
Метод printGrade здесь является методом типа void и не возвращает значения.
Вызов метода void должен быть оператором. Поэтому он вызывается как оператор в третьей строке основного метода. Как и любое утверждение, которое заканчивается точкой с запятой.
Единый метод проверки типа пустоты
Уровень обслуживания Java будет иметь множество методов типа void, таких как save* и update*. Эти методы выполняют только некоторые обновления и не имеют возвращаемого значения. Одиночный тест не может быть написан на основе возвращаемого значения метода. используйте только специальные методы;
Среда для этого метода: Mockito, testng
Проверенные методы:
Метод VOID, который вы хотите протестировать
@Override public void updateRuleName(Long ruleId, String newRuleName, Long ucId) { Assert.notNull(ruleId, «Идентификатор правила не может быть нулевым»); Assert.notNull(newRuleName, «Имя правила не может быть нулевым»); notNull( ucId, "UCID оператора не может быть нулевым"); String cleanNewRuleName = StringUtils.trim(newRuleName); if (StringUtils.isBlank(cleanNewRuleName)) { throw new IllegalArgumentException("Имя нового правила не может быть пустым"); // Объект правила запроса Rule rule = queryRuleById(ruleId); = rule) { throw new IllegalDataException("Правило не найдено" } rule.setRuleId(ruleId); rule.setRuleName(cleanNewRuleName); rule.setUpdateUcid(ucId); rule.setUpdateTime(new Date()); ruleDao.updateSelective(rule);
Метод испытания:
тест метода возврата void
@Test public void testUpdateRuleName() { Long ruleId = 1L; String newRuleName = "newRuleName"; Long ucId = 123L; List<Rule> Rules = new ArrayList<Rule>(); ((байт) DBValueSetting.RULE_STATUS_TAKE_EFFECT); Rules.add(правило); Объект правила запроса Map<String, Object> params = new HashMap<String, Object>(); params.put("ruleId", ruleId); thenReturn(rules); .doAnswer(new Answer<Object>() { ответ общественного объекта (вызов InvocationOnMock) { // Точка останова 2: Rule rule = (Rule) invoction.getArguments()[0]; Assert.assertTrue(rule.getRuleName().equals("newRuleName")); return null; } }).when(ruleDao ).updateSelective( Mockito.any(Rule.class)); // Точка останова 1: сначала выполните здесь ruleService.updateRuleName(ruleId, новоеИмяПравила, ucId);
Как показано в комментариях, если добавлены две точки останова, последняя вызывающая строка будет выполнена первой во время выполнения конечной точки 1, будет выполнена заглушка конечной точки 2. В это время ее можно получить в точке останова 2. . Перейдите к входным параметрам выполнения метода и выполните проверку Assert для входных параметров для достижения цели;
новый Anwer — это интерфейс только с одним методом, который используется для установки записи выполнения прокси для вызовов методов.
Реализация doAnswer
public интерфейс Answer<T> { /** * @param invoction вызов макета * * @return возвращаемое значение * * @throws Throwable бросаемый объект */ T ответ(InvoctionOnMock invoction) throws Throwable; }
Когда код выполняется для «ruleDao.updateSelective(rule);», будет запущен перехватчик, вызванный для фиктивного объекта. В перехватчике будет создан динамический прокси. Вызов динамического прокси — это метод, описанный в новом. Отвечать;
С помощью методов перехвата и прокси реализуется установка и получение входных и выходных параметров метода фиктивного объекта. С помощью этого метода можно проверить вызов класса исполнения внутри метода VOID.