Предисловие
Когда мы изучали Java, учителя или общие книги писали, что есть восемь основных видов Java. Это: байт, Int, короткие, длинные, поплавок, двойной, чар, логический. Однако, когда я читал библию Java, «думая на Java», сегодня утром я обнаружил, что автор надевает пустоту при объяснении типа данных. Есть девять видов этого. Я узнал об этом на Baidu, что некоторые книги также пишут девять основных видов Java.
В уровне сервиса Java есть много методов пустого типа, таких как Save* и обновление*. Эти методы просто обновляются и не будут иметь возвращаемого значения. Единый тест не может быть записан на основе возврата значения метода, поэтому они могут использовать только специальные методы;
Среда этого метода: Mockito, Testng
Методы проверены:
Ява
@Override public void updaterulename (long rugeid, string newrulename, long ucid) {assert.notnull (rugeid, «идентификатор правила не может быть нулевым»); Assert.notnull (Newrulename, «Имя правила не может быть нулевым»); Assert.notnull (ucid, «UCID оператора не может быть нулевым»); String cleanNewrulename = stringUtils.trim (newrulename); if (stringUtils.isblank (cleannewrulename)) {бросить новое allosalargumentException («новое имя правила не может быть пустым»); } // Запросить правило правила правила правила = QueryRuleById (ruleId); if (null == rule) {бросить новое allodaldataexception («правило не найдено»); } rual.setRuleId (rugeId); Правило. Setrulename (CleanNewRulenAme); ruge.setupdateucid (ucid); rual.setupDateTime (new Date ()); ruleedao.updateselective (правило); }Метод испытаний:
Проверка Java с помощью метода возврата void
@Test public void testupdaterulename () {long rugeid = 1l; String newrulename = "newrulename"; Длинный ucid = 123L; Список <Правило> Правила = новый ArrayList <Rult> () (); Правило правила = новое правило (); ruge.setrulestatus ((byte) dbvalueuesetting.rule_status_take_effect); Правила. Адд (Правило); // Запросить карту объекта правила <строка, объект> params = new Hashmap <String, Object> (); params.put ("ruleid", rugeid); Mockito.when (Ruleedao.QueryRulesByCondition (params)). Затем возвращать (правила); Mockito.doanswer (новый ответ <object> () {public Object respong (vocociationOnmock vocation) {// точка останова 2: Правило правила = (правило) villocation.getarguments () [0]; assert.asserttrue (rule.getrulename (). Equals ("newrulenane"); }). Когда (RudeDao) .UpdateSelective (mockito.any (rule.class)); // Точка останова 1: Выполнить здесь First Rulesservice.updaterulename (RuleId, NewRulename, UCID); }Как показано в комментариях, если будут добавлены две точки останова, последняя строка вызова будет выполнена сначала во время процесса выполнения. Во время выполнения конечной точки 1 будет выполнена заглушка конечной точки 2. В настоящее время параметр ввода выполнения метода может быть получен в точке 2 -й точки 2, а входящий параметр может быть выполнен в проверке утверждения для достижения цели;
Новый ответ - это интерфейс, который имеет только один метод, который используется для установки портала выполнения прокси для вызовов методов.
Doanswer Реализация Java
Ответ общедоступного интерфейса * * @return Значение, которое нужно возвращать * * @Throws бросать, бросается, чтобы быть брошенным */ T ответ (vocoticOnmock vocation) бросает бросает;}
Когда код выполняется в " ruleDao.updateSelective(rule); ", будет запускается перехватчик, призываемый к макетному объекту. В перехватчике будет создан динамический прокси. Вызов динамического прокси - это метод, охваченный новым ответом;
Используя два метода: Intercept и Proxy, реализованы настройки и получение входящих и исходящих параметров метода Mock Object. Таким образом, вызовы класса выполнения в методе void могут быть проверены;
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи поможет вашему обучению или работе. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.