Тестирование подразделения в .NET с объектами Endeca

StackOverflow https://stackoverflow.com/questions/3876476

Вопрос

Большинство или все объекты Endeca имеют внутренние конструкторы. Я работаю над хорошим проектом, у которого не хватает большого тестового покрытия вокруг API Endeca, есть ли хорошие стратегии для тестирования взаимодействия с Endeca?

До сих пор лучшее, что у нас есть вид адаптера бедного человека:

public class DimValue : IDimValue
{
    public DimValue(Dimension dim, DimVal dimValue)
    {
        Dimension = dim;
        Value = dimValue;
    }

    public virtual bool IsNavigable()
    {
        return Value.IsNavigable();
    }

    public virtual long Id()
    {
        return Value.Id;
    }

    // and so on...
}

Затем мы можем издеваться от нашего типа, DimValue. Это лучший способ сохранить их API как можно проверить как можно? Или есть еще один метод, который предпочитает этому?

Это было полезно?

Решение

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

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

Resharper имел отличную особенность для создания классов обертки. Создайте класс, добавьте участника, который вы хотите обернуть .. Затем вызвать рефакторинг делегатов генерации. Выберите «Все публику» и там вы идете .. один завернутый класс.

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

Если вы тестируете API Endeca в качестве какой-либо формы регрессии, чтобы вы могли легче принять новые выпущенные их API, то я бы просто пишу тесты на более «приемом» уровне; Управляя API, они дают вам. Но опять же, только проверьте способы использования их API.

Я бы сделал вышеуказанный подход, однако ...

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

Надеюсь это поможет.

Другие советы

Большинство классов Endeca являются бетонными, поэтому трудно сделать тестирование подразделения, в нашем последнем проекте мы должны определить себя абстрактным слоем, именно это был фасадный слой между нашим собственным кодом и API Endeca EG, например, INDECAQUERY. С этим слоем абстракции мы могли бы быстро пройти тест без какого-либо реального доступа Endeca, вы знаете, открытие соединения Endeca будет стоить вам несколько секунд каждый раз. Это было много работы для реализации всех необходимых поддельных объектов Endeca. Наше приложение было сайтом электронной коммерции, и мы использовали Endeca для всех листингов продуктов, поиск функций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top