Я сейчас делаю это. A-A-A-A другого типа
Arrange - setup
Act - what is being tested
Assemble - what is optionally needed to perform the assert
Assert - the actual assertions
Пример теста обновления:
Arrange:
New object as NewObject
Set properties of NewObject
Save the NewObject
Read the object as ReadObject
Act:
Change the ReadObject
Save the ReadObject
Assemble:
Read the object as ReadUpdated
Assert:
Compare ReadUpdated with ReadObject properties
Причина в том, что ACT не содержит чтения ReadUpdated, потому что он не является частью действия. Акт только меняется и сохраняется. Так что на самом деле, ARRANGE ReadUpdated для подтверждения, я вызываю ASSEMBLE для подтверждения. Это сделано для предотвращения путаницы в разделе ARRANGE
ASSERT должен содержать только утверждения. Это оставляет ASSEMBLE между ACT и ASSERT, который устанавливает assert.
И наконец, если вы потерпели неудачу в Arrange, ваши тесты неверны, потому что у вас должны быть другие тесты, чтобы предотвратить / найти эти тривиальные ошибки. Поскольку для сценария, который я представляю, уже должны быть другие тесты, которые проверяют READ и CREATE. Если вы создаете «Защитное утверждение», возможно, вы нарушаете DRY и создаете обслуживание.