Архитектура среды тестирования на основе моделей


Пример построения теста - часть 3


Заглушка должна инициализироваться после каждого вызова transfer(), для этого в ней определен метод initSpy(). public class AccountLogSpy { int balance; int maxCredit;

Account checkedObject; AuditLog logSpy;

public void setCheckedObject(Account checkedObject) { this.checkedObject = checkedObject; this.balance = checkedObject.getBalance(); this.maxCredit = checkedObject.getMaxCredit(); logSpy = Mockito.spy(checkedObject.getLog()); checkedObject.setLog(logSpy); }

int oldBalance; boolean wasPossible;

public boolean possibleTransfer(int sum) { if (balance + sum > maxCredit) return true; else return false; }

public void initSpy(int sum) {

Mockito.reset(logSpy); oldBalance = balance; }

public void transferLogSpy(int sum) { boolean permission = checkedObject.getValidator().validateTransfer(checkedObject, sum);

if (wasPossible && permission) {

Mockito.verify(logSpy).logKind("SUCCESS"); Mockito.verify(logSpy).logNewBalance(balance); } else if (!permission)

Mockito.verify(logSpy).logKind("BANNED"); else

Mockito.verify(logSpy).logKind("IMPROPER");

Mockito.verify(logSpy).logOldBalance(oldBalance); Mockito.verify(logSpy).logSum(sum); }

public void transferUpdate(int sum) { if( possibleTransfer(sum) && checkedObject.getValidator().validateTransfer(checkedObject, sum)) {

wasPossible = true; balance += sum; } else

wasPossible = false; } }

Описание модели ситуаций представлено ниже. В ней ситуации классифицируются по четырем характеристикам: корректность перевода, прохождение валидации, знак предшествовавшего значения баланса и знак переводимой суммы. Поскольку определение ситуации зависит от модельного состояния счета и нуждается в синхронизаторе состояния, эта модель наследует модели функциональности, используя повторно определенные в ней элементы кода. public class AccountCoverage extends AccountContract { public void transferCoverage(int sum) { boolean permission = checkedObject.getValidator().validateTransfer(checkedObject, sum);




Начало  Назад  Вперед



Книжный магазин