2015-08-08 4 views
1

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

+0

Упорядочение означает не только создание объектов. Упорядочить настройку, необходимую для запуска проверенного кода. Сюда входит любая инициализация зависимостей, mocks и данных. – kalkanbatuhan

+0

Можете ли вы обойти часть «Упорядочить из закона»? – cobby

ответ

2

Единичный тест проверяет один «акт» в программе, как правило, один вызов метода на экземпляр объекта. Arrange, Act, Assert организует единичный тест на три части: до, во время и после Закона.

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

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

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

Таким образом, мы не «организуем проверку для утверждения», мы организуем мир для Закона. В части «Упорядочить» мы делаем то, чьи эффекты мы уже знаем. Каждый метод, называемый частью Arrange, должен быть протестирован в другом месте. В Законе мы делаем что-то, эффект которого мы еще не знаем; это то, что на самом деле тест. (В тестовой разработке мы, возможно, еще не написали метод или добавили к его реализации, чтобы пройти этот конкретный тест.)

+0

Хороший ответ, спасибо! Однако, похоже, что часть Act - это всего лишь однострочный, а именно вызов метода. Итак, я думаю, что разделение просто ради удобочитаемости? – cobby

+0

Читаемость, да, но это глубокая читаемость. Части Arrange, Act и Assert имеют очень разные роли в тесте, поэтому их разделение - это мощный способ правильно думать о тесте. –

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