2016-11-24 4 views
1

Пусть Предположим, что:Испытание блока утверждают с результатом после возвращения;

void someMethod(Context context, int a){ 
if(context==null || a == 0){ 
return; 
} 
//some code here 
} 

Можно ли как-то проверить, что он остановился на этом, если заявление, если он ничего не возвращает? Я имею в виду, я хотел бы поставить какое-то утверждение, которое проверил «okey, context был null, поэтому он остановился на этом возврате».

Конечно, проблема связана с тем, что класс недействителен, и может быть сомнительно, почему я хотел бы протестировать подобные методы, но я хотел бы услышать о некоторых возможностях.

+1

Все, что вы можете проверить - есть ли ожидаемое (или неожиданное) изменение состояния экземпляра, на который вы вызываете 'someMethod', или' context'. И, в конечном счете, это то, что вы должны тестировать: проверить, что делает этот метод (изменения состояния или нет), * не * как он это делает (возвращает ли он эту строку или эту строку). –

+0

@ Энди Тернер Спасибо за ответ. Да, я знаю об этом, но было интересно, есть ли альтернативное решение для такого рода ситуаций. – Nimdokai

+0

Это примечание, связанное с вашим вопросом, но я бы отменил условное условие, чтобы избежать 'return': if (context! = Null && a! = 0) { .... }' – Pau

ответ

4

Если метод не имеет возвращаемого значения, все, что вы можете проверить это:

  • изменяет состояние: есть ли ожидать (или неожиданное) изменение состояния экземпляра, на котором вы вызываете someMethod или context , или какое-либо другое глобальное состояние, которое может быть изменено в методе.
  • Исключения: если context - null, и вы не вернетесь сюда, вы можете получить NullPointerException или какой-либо другой вид исключения впоследствии. Но на самом деле вам не нужно проверять это явно, поскольку тест JUnit завершился неудачно, если случится то, чего вы не ожидаете (вам просто нужно убедиться, что вы случайно не проглотили это исключение в своем тесте).

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

+0

Хорошо, спасибо за ответ. Я буду помнить об этом :) – Nimdokai

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