2013-08-25 1 views
0

У меня есть класс интегратора, который мне нужно проверить, конструктор класса создает экземпляр сервисного клиента. Поскольку клиент службы является внешней зависимостью, я хочу проверить индивидуальную ответственность интегратора. Код выглядит так.Какой лучший способ издеваться над конструктором для JUnit?

public class Integrator { 

    Client client; 

    public Integrator() { 
     client = new RemoteClient(); 
    } 

    public String invokeClient() { 
     .... 
    } 
} 

Что может быть лучшим способом издеваться над этим? Кроме того, мне нужно убедиться в охвате кода.

ответ

1

использования Dependency Injection, чтобы не создавать клиента:

public Integrator(Client client) { 
    //... argument checking omitted 
    this.client = client; 
} 

Теперь ваши тесты могут создавать фиктивные клиенты, которые могут быть переданы непосредственно.

Вы все еще можете сохранить конструктор без аргументов, а также:

public Integrator() { 
    this(new RemoteClient()); 
} 
+0

Существует довольно тесная связь между интегратором и клиентом, потому что инверсия зависимости уже позаботилась на один уровень выше. –

+0

Нет никакого вреда, имеющего несколько уровней инверсии зависимостей. Плюс это звучит так, будто вам нужно немного более слабое соединение, чтобы вы могли издеваться над ним. – dkatzel

+0

Я опишу проблему, интегратор подбирает клиента DI, теперь каждый отдельный клиент тесно связан с поставщиком услуг. Показанный пример не подходит, он показывает, что мы собираем клиента, где можно использовать DI, но, как сказано, мы сначала собираем клиента, используя DI, а затем собираем поставщика услуг в клиенте, который тесно связан. Теперь снова DI, заставит интегратора выбрать клиента, а также указать указать поставщика услуг, который не имеет смысла. –

 Смежные вопросы

  • Нет связанных вопросов^_^