Если у вас есть несколько способов создания объекта, вы можете проверить состояние объекта для каждого из методов создания (то есть параметризованного конструктора, а также метода фабрики). Таким образом, имеет смысл дублировать утверждения.
Во время рефакторинга после прохождения теста (всегда помните мантру: красный-зеленый-рефактор), если вы обнаружите дублирование не только в рабочем коде, но и в тестах, то вы должны удалить его, например с использованием метода рефакторинга Extract Method.
[TestMethod]
public void if_parametrized_ctor_is_called_then_state_should_be_accordingly {
var order = new Order(customerId, ...);
ObjectPropertiesShouldBeSetTo(order, customerId, ...);
}
[TestMethod]
public void if_factory_method_is_called_then_state_should_be_accordingly {
var order = myFactory.CreateOrder(customerId, ...);
ObjectPropertiesShouldBeSetTo(order, customerId, ...);
}
// Extracted to remove code duplication
public void ObjectPropertiesShouldBeSetTo(Order order, int customerId, ...) {
Assert.AreEqual(customerId, order.CustomerId);
Assert.AreEqual(...);
}
Это усложняет ситуацию, если вы проверяете несколько условий в одном утверждении Assert, как в вашем примере. Это снижает читаемость теста и может быть трудно найти причину, если какое-либо из условий не выполнено.