Да, я думаю, вы немного смущены.
Макетные рамки предназначены для создания объектов «Mock», которые в основном подделывают часть функциональности ваших реальных объектов, поэтому вы можете передавать их методам во время тестов, не прибегая к необходимости создания реального объекта для тестирования.
Позволяет запускать через быстрый пример
у вас есть «() Сохранить» метод, который принимает «Док» объект и возвращает успех флаг «булевой»
public bool Save(Doc docToSave(){...}
Теперь если вы хотите написать единичный тест для этого метода, вам придется сначала создать объект документа и заполнить его соответствующими данными, прежде чем вы сможете протестировать метод «Сохранить()». Это требует больше работы, чем вы действительно хотите.
Вместо этого можно использовать фреймворк Mocking для создания объекта «Doc» для вас.
Синтаксис различного между рамками, но и в псевдо-коде можно было бы написать что-то вроде этого:
CreateMock of type Doc
SetReturnValue for method Doc.data = "some test data"
Рамки насмешливой создаст фиктивный фиктивный объект типа Doc, который правильно возвращает «тестовые данные», когда это Вызывается свойство .data '.
Вы можете использовать этот фиктивный объект, чтобы проверить свой метод сохранения:
public void MyTest()
{
...
bool isSuccess = someClass.Save(dummyDoc);
...
}
Рамки насмешливый гарантирует, что, когда ваш «Save()» метод обращается свойства на объекте dummyDoc, правильно данные возвращаются , и спасение может произойти естественным образом.
Это немного надуманный пример, и в таком простом случае, возможно, было бы так же просто создать реальный объект Doc, но часто в сложном битном программном обеспечении было бы намного сложнее создать объект, поскольку он имеет зависимости от других вещей или у него есть требования к другим вещам, которые должны быть созданы в первую очередь. Mocking удаляет часть этой дополнительной перегрузки и позволяет вам протестировать только тот метод, который вы пытаетесь протестировать, а также не беспокоиться о тонкостях класса Doc.
Мок-тесты - это просто модульные тесты с использованием издевающихся объектов, а не реальных. Выделенные объекты на самом деле не используются как часть фактического производственного кода.
Если вы хотите что-то, что заменит ваши классы баз данных, чтобы позже вы могли передумать, вам нужно написать интерфейсы или абстрактные классы, чтобы предоставить методы, которые вам нужны, чтобы соответствовать семантике сохранения/загрузки, тогда вы можете заполните несколько полных реализаций в зависимости от того, какие типы хранилищ вы выберете.
> «Я никогда не использовал модульное тестирование или макет каркаса» => только начинайте с модульного тестирования, чтобы получить представление об этой теме. позже попытайтесь насмехаться. хорошее видео youtube (C#): http://www.youtube.com/watch?v=f60aIlNhMoE или для java смотрите здесь http://java.dzone.com/articles/test-driven-teaching; вы можете найти очень быстрое введение с некоторым кодом здесь: http://mockito.org/ – Karussell