Я работал над Java-приложением, где мне нужно использовать JUnit для тестирования. Я изучаю это, когда иду. До сих пор я считаю, что это полезно, особенно при использовании в сочетании с плагином Eclipse JUnit.JUnit для функций с Void Возвращаемые значения
После небольшой игры я разработал последовательный метод построения модульных тестов для функций без возвращаемых значений. Я хотел поделиться им здесь и попросить других прокомментировать. Есть ли у вас какие-либо предлагаемые улучшения или альтернативные способы достижения одной и той же цели?
Общие Возвращаемые значения
Во-первых, есть перечисление, которое используется для хранения значений, представляющих результаты тестирования.
public enum UnitTestReturnValues
{
noException,
unexpectedException
// etc...
}
Обобщенная Тест
Давайте предположим, что тестовый модуль записывается для:
public class SomeClass
{
public void targetFunction (int x, int y)
{
// ...
}
}
Класс тест JUnit будет создан:
import junit.framework.TestCase;
public class TestSomeClass extends TestCase
{
// ...
}
В этом классе , Я создаю функцию, которая используется для каждого ca ll к тестируемой целевой функции. Он ловит все исключения и возвращает сообщение, основанное на результатах. Например:
public class TestSomeClass extends TestCase
{
private UnitTestReturnValues callTargetFunction (int x, int y)
{
UnitTestReturnValues outcome = UnitTestReturnValues.noException;
SomeClass testObj = new SomeClass();
try
{
testObj.targetFunction (x, y);
}
catch (Exception e)
{
UnitTestReturnValues.unexpectedException;
}
return outcome;
}
}
JUnit тесты
Функции, вызываемые JUnit начинаются со строчной «тест» в имени функции, и они терпят неудачу в первом неудавшегося утверждения. Чтобы запустить несколько тестов на выше targetFunction, было бы написано как:
public class TestSomeClass extends TestCase
{
public void testTargetFunctionNegatives()
{
assertEquals (
callTargetFunction (-1, -1),
UnitTestReturnValues.noException);
}
public void testTargetFunctionZeros()
{
assertEquals (
callTargetFunction (0, 0),
UnitTestReturnValues.noException);
}
// and so on...
}
Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения или улучшения. Имейте в виду, что я участвую в процессе обучения JUnit, поэтому я уверен, что есть доступные инструменты, которые могут облегчить этот процесс. Благодаря!
Недействительные функции обычно имеют побочные эффекты, так что вы можете проверить их? –