Самоучитель по jMock для начинающих с тестовым проектом
Что такое jMock?
jMock - это библиотека, которая помогает создавать управляемые тестами разработки Java-кода с использованием mock-объектов.С помощью jMock Мы можем самостоятельно тестировать класс, который зависит от другого класса.
Предположим, если один класс зависит от другого, мы можем создать макет зависимого класса и задать начальные свойства для проверки зависимого класса.
Учебный пример по jMock:
Примечание: Для этого тестового проекта мы используем платформу Eclipse. Вы можете загрузить Eclipse с сайта здесь.
Убедитесь, что Среда выполнения Java SE уже установлен, чтобы программа установки Eclipse могла начать установку.
Создайте тестовый проект на java с именем Test project. Включите в его classpath следующие банки:
- jmock-2.5.1.jar
- hamcrest-core-1.1.jar
- hamcrest-library-1.1.jar
- JUnit-4.5.jar
Создайте интерфейс с именем ITestInterface.Поместите следующий код в этот интерфейс:
проверка упаковки;
Публичный интерфейс ITestInterface
{
public int test();
}
Создайте TestClass1.Поместите в этот класс следующий код
проверка упаковки;
public class TestClass1 implements ITestInterface
{
public int test()
{
вернуться 3;
}
}
Создайте TestClass2.Поместите в этот класс следующий код
проверка упаковки;
public class TestClass2
{
ITestInterface testInterface;
public TestClass2()
{
this.testInterface=testInterface;
}
public int testMock()
{
int result=testInterface.test();
Вернуть результат;
}
}
Создайте TestClass3.Поместите в этот класс следующий код
проверка упаковки;
import junit.framework.Assert;
import org.jmock.Mockery;
import org.junit.Test;
public class TestClass3
{
@Test
public void testJmock()
{
org.jmock.Mockery TestInterfaceMock= новый Mockery();
final ITestInterface testInterface=TestInterfaceMock.mock(ITestInterface.class);
TestInterfaceMock.checking(new org.jmock.Expectations()
{{
oneOf(testInterface).test();
will(returnValue((3)));
}});
int j=testInterface.test();
System.out.println(j);
Assert.assertEquals(j, 3);
}
}
Из приведенного выше примера видно, что TestClass1 реализует интерфейс ITestInterface. Здесь, как мы видим, TestClass2 зависит от TestClass1. Поэтому, чтобы сделать его юнит-тестируемым, мы не делаем новый TestClass1 в TestClass2. Мы используем mock-объект.
В TestClass3 мы создаем Mock-объект ITestInterface.Мы устанавливаем ожидание, что этот объект вернет 3 при вызове во время модульного тестирования TestClass2.Например, в TestClass3 при вызове testInterface.test() вызов идет в TestClass2.В TestClass2 при вызове testInterface.test() значение возвращается mock-объектом.Таким образом, мы тестируем TestClass2 независимо.
Чтобы протестировать приведенный выше пример, щелкните правой кнопкой мыши на TestClass3 и выберите run as Junit test.
На экране появится следующее окно:
Тестовый пример выполнен успешно!
5 ответов
Могу ли я узнать, как testclass2 зависит от testclass1
Спасибо, что поделились ценной информацией о jmock! Было приятно читать!
You are welcome Tanuja 🙂 Happy to help!
Хороший пост
Thank you 🙂