В чем разница между Arrange и Act в схеме Arrange, Act, Assert?

Я не очень понимаю разницу между аранжировкой и актерской частью паттерна в юнит-тестах. Arrange означает ТОЛЬКО создание объектов? Почему в первую очередь мы должны отделить часть Arrange от части Act, и по каким критериям можно решить, относится ли что-то к Act, а не к части Arrange? Мне кажется, что все принадлежит части Arrange, так как мы "устраиваем тест" для утверждения, не так ли?

1 ответ

Решение

Модульный тест проверяет один "Act" в программе, обычно один вызов метода для экземпляра объекта. Организовать, действовать, ассерт организует модульное тестирование на три части: до, во время и после акта.

  • Часть Arrange - это все, кроме вызова метода, представляющего интерес. В части Arrange мы устанавливаем состояние, в котором мы хотим, чтобы мир (объект, с которым мы вызываем метод, другие объекты, с которыми он взаимодействует и т. Д.) Находился при вызове метода.

  • Акт - это вызов метода, который мы тестируем.

  • И (чтобы быть полным), Assert - остальная часть теста, где мы утверждаем, что Закон оказал влияние на мир, который мы ожидаем.

Поэтому мы не "устраиваем проверку на утверждение", мы устраиваем мир для Акта. В части Arrange мы делаем вещи, эффекты которых мы уже знаем. Каждый метод, вызываемый в части Arrange, должен быть протестирован в другом месте. В этом законе мы делаем то, чей эффект мы еще не знаем; это то, что тест на самом деле. (В управляемой тестами разработке мы еще не написали метод или не добавили его в реализацию для прохождения этого конкретного теста.)

Другие вопросы по тегам