JUnit должен передать состояние условие успешности или неуспешности?

Самый простой способ найти правильную дату - использовать datejs.

http://www.datejs.com/

Я получаю свои даты через Ajax в этом формате в виде строки: '2016-01-12T00: 00: 00 '

var yourDateString = '2016-01-12T00:00:00';
var yourDate = new Date(yourDateString);
console.log(yourDate);
if (yourDate.getTimezoneOffset() > 0){
    yourDate = new Date(yourDateString).addMinutes(yourDate.getTimezoneOffset());
}
console.log(yourDate);

Консоль будет читать:

Пн 11 января 2016 19:00:00 GMT-0500 (Восточное стандартное время)

Вт 12 января 2016 00: 00:00 GMT-0500 (восточное стандартное время)

https://jsfiddle.net/vp1ena7b/3/

«addMinutes» происходит от datejs, вы Возможно, я мог бы сделать это в чистом js самостоятельно, но у меня уже был datejs в моем проекте, поэтому я нашел способ использовать его, чтобы получить правильные даты.

Я думал, что это может кому-то помочь ...

62
задан Jason Cohen 2 July 2009 в 17:00
поделиться

6 ответов

Я редко даже беспокоюсь о сообщении, по крайней мере для assertEquals . Любой здравомыслящий исполнитель тестов объяснит, что вы использовали assertEquals и две вещи, которые должны были быть равными. Ни одно из ваших сообщений не дает дополнительной информации.

Я обычно считаю, что сбои модульных тестов - временные явления - я быстро выясню, что не так, и исправлю это. «Выяснение того, что не так» обычно включает в себя достаточно деталей, чтобы одно сообщение не имело большого значения. Рассмотрим "время, сэкономленное за счет сообщения" против "времени, потраченного на размышления о сообщениях" :)

РЕДАКТИРОВАТЬ: Хорошо, один случай, когда я мог бы использовать сообщение: когда в тексте есть краткое описание, которое не не очевидно из строкового представления объекта.

Например: «Ожидаемая дата - 1 декабря» при сравнении дат, хранящихся в миллисекундах.

Я бы не стал беспокоиться о том, как вы это выразите точно: просто убедитесь, что из сообщения очевидно, что вы имеете в виду. Либо «должно быть», либо «не должно» - просто «1 декабря» не будет очевидным.

31
ответ дан 24 November 2019 в 16:53
поделиться

Я не думаю, что это вообще имеет значение - вы уже знаете, что произошел сбой, и поэтому не имеет значения, говорится в сообщении, что должно было произойти, или чего не должно происходить .

Цель сообщения - помочь вам, когда это возможно, а не добиться некоторой полноты.

Очевидно, что в случае assertEquals это менее важно, но сообщение важно в случае общих утверждений. Сообщение должно помочь вам получить достаточно контекста, чтобы сразу понять, что именно не удалось.

Однако объем необходимого контекста (и, следовательно, подробности сообщения) должен зависеть от того, как вы получите отчет. Например, если вы получили его в Eclipse, вы можете легко пойти, пообщаться и посмотреть, что произошло, поэтому сообщение будет менее важным. Однако, если вы получите отчеты по электронной почте (например,

3
ответ дан 24 November 2019 в 16:53
поделиться

Я хотел бы ответить на этот вопрос, не задумываясь о том, полезно ли сообщение в общем виде.

Если тест не проходит, значит что-то не так. Я знаю это. Я хочу знать, почему он сломан. Это очень легко узнать, потому что мне просто нужно открыть тестовый пример и SUT. Как сказал Джон, это очень легко исправить (надеюсь ;-)).

Но как насчет сообщения? Это сообщение для меня является советом, что можно сделать, чтобы превратить его в зеленый тестовый пример. Поэтому я был бы признателен, если бы в тексте сообщения был дан совет, как решить эту проблему или где искать проблему.

Еще одним интересным аспектом было бы использование положительных выражений. Стоит подумать об использовании положительных текстовых сообщений. В вашем примере я бы использовал Объекты должны быть идентичными . Но это небольшая причина.

3
ответ дан 24 November 2019 в 16:53
поделиться

Проголосуйте и за меня (как и за Джона), но я использовал подобное сообщение (при утверждении равно) только при построении единственного теста с матрицей значений и одной тестовых элементов не выполняется: я использую сообщение, чтобы указать, какой тестовый пример не прошел. В противном случае текст полностью повторяется.

1
ответ дан 24 November 2019 в 16:53
поделиться

Из javadocs JUnit:

Утверждает, что два объекта равны. Если они не являются AssertionFailedError выбрасывается с данным сообщением.

Согласно API, сообщение может быть любым, каким вы хотите. Я бы сказал, что у вас есть два варианта, одинаковые и излишние. Успех или неудача утверждения уже предоставляет всю информацию, которую вы предоставляете в сообщении.

Из этого следует, что у вас не должно быть ничего (есть утверждение, которое не принимает строку специально) ИЛИ включить сообщение со смыслом, выходящим за рамки того, что уже есть.

Так что я предполагаю, что это повторение ответа Джона, но слишком многословное, чтобы быть комментарием.

1
ответ дан 24 November 2019 в 16:53
поделиться

Я не помещаю сообщение для случая, который вы цитируете, если только я не запускаю тест, в котором у меня есть массив аналогичных тестовых значений, которые я выполняю в цикле, и я хочу чтобы точно определить, какой из них не удалось. Затем я добавляю сообщение, чтобы сказать, какое именно.

0
ответ дан 24 November 2019 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: