Шаблоны проектирования и тестирование. Создавайте вещь только в том случае, если удовлетворено несколько критериев.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Шаблоны проектирования и тестирование. Создавайте вещь только в том случае, если удовлетворено несколько критериев.

Сообщение Anonymous »

Если бизнес-правила гласят, что [некоторая Вещь] должна создаваться только при выполнении десяти условий, кажется безумием писать тест для каждой истинной/ложной перестановки этих условий. Например, если бы я хотел проверить, что Вещь не создается, когда выполняются только 9 из 10 условий, мне пришлось бы настроить тестовые данные таким образом, чтобы первые восемь условий были доволен.

Код: Выделить всё

public class ThingCreator {

// ...

public void create(SomeRequestToCreateThing request) {

final var condition1 = isCondition1Satisfied(request);
final var condition2 = isCondition2Satisfied(request);
// condition3, condition4 etc etc

if (condition1 && condition2) { // && condition3 && condition4 etc etc
doCreate(request);
}
}

}
(Наверное, нехорошо иметь логику для проверки запроса и фактического создания вещи в одном и том же методе, но это делает пример кода короче.)
Моя первая мысль заключается в том, что если я абстрагирую условия и внедряю их в Творца, то, когда я проверяю Творца, мне технически не нужно проверять каждую комбинацию; Мне нужно только проверить, что Создатель вызывает isSatisfied по некоторым заданным критериям:

Код: Выделить всё

public interface Criterion {
boolean isSatisfied(SomeRequestToCreateThing request);
}

public class ThingCreator {

// ...

private final List criteria;

public void create(SomeRequestToCreateThing request) {
final var allSatisfied = this.criteria.stream()
.allMatch(criterion -> criterion.isSatisfied(request));

if (allSatisfied) {
doCreate(request);
}
}

}
Но потом я понял, что это может быть «обманом», потому что на самом деле я не проверяю реальные бизнес-требования (для создания вещи должны быть удовлетворены именно эти N бизнес-условий).
p>
Похоже, это очень распространенная проблема, поэтому мне интересно, есть ли какой-то шаблон проектирования, который мне следует применить, или, может быть, мне просто нужно скорректировать свою философию тестирования.


Подробнее здесь: https://stackoverflow.com/questions/787 ... -are-satis
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»