2015-06-23 1 views
-2

Я использую JUnit для проверки кода.ожидается: java.lang.Long <1> но был: java.lang.Integer <1>

В этом разделе ниже:

assertEquals(query.get(0).get("FEEDBACK_ID"), feedbackValues.getFeedbackId()); 

Результаты в следующей ошибки:

java.lang.AssertionError: expected: java.lang.Long<1> but was: java.lang.Integer<1> 

Какой штраф ...

Мой вопрос, как я могу преобразовать этот объект:

query.get(0).get("FEEDBACK_ID") 

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

+2

Если «Integer» и «Long», то лучше проверить оба значения как 'long', а не' int'. Используйте 'Number # longValue' для' assertEquals'. –

+0

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

+1

@AlexR очень плохая идея ... –

ответ

1

То, что вы хотите достичь, неверно, поэтому единственный правильный ответ: не делайте этого. В основном, вы пытаетесь добавить поведение к вашему методу только для соответствия вашему тесту. Что вы тестируете в этом случае? Конечно, не метод. Даже если есть мало шансов, что это произойдет, отбрасывание до int может привести к переполнению целых чисел и испортить ваш тест.

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

Ваши методы должны возвращать один и тот же тип, или вы должны повысить результат int до long, так как он безопасен.

+0

Комментарий от downvoter? – Dici

Смежные вопросы