о модульном тестировании - PullRequest
0 голосов
/ 15 декабря 2010

Q: Мой вопрос состоит из трех частей:

1-я хочу спросить, как сделать модульное тестирование для метода. Этот метод использует другой метод для подключения к базе данных (концепция слоев или ORM).

2 - это юнит-тестирование может сделать тест среди моих методов (контракты между ними) как ?? и, пожалуйста, пример, чтобы прояснить этот момент?

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

Пожалуйста, не стесняйтесь объяснять, насколько это возможно, любые предложения ресурсов ... и т. Д.

заранее спасибо

1 Ответ

2 голосов
/ 15 декабря 2010

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

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

Итак, давайте возьмем в качестве примера следующий интерфейс:

public interface IProductsRepository
{
    Product Get(int productId);
    void Save(Product product);
}

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

public class ProductsService
{
    private readonly IProductsRepository _repository;
    public ProductsService(IProductsRepository repository)
    {
        _repository = repository;
    }

    public void SomeBusinessOperation(int productId)
    {
        var product = _repository.Get(productId);
        // TODO: update some properties of the product
        _repository.Save(product);
    }
}

Как видите, класс обслуживания теперь слабо связан с хранилищем. Тогда вы могли бы очень легко провести его модульное тестирование в изоляции. Просто выберите макет фреймворка, такой как Rhino Mocks , и в своем модульном тесте создайте импровизированную реализацию репозитория, которая будет передана конструктору сервисов, и сможете протестировать бизнес-операцию в изоляции любой базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...