Иногда в моем тесте я должен выполнить вызов разные настройки(), который устанавливает Mocks по-разному для каждого испытания - например, так:Модульное тестирование и насмешливый для каждого теста
private void Setup(bool isTrue)
{
mock.Setup(x => x.DisplayNames).Returns(new Dictionary<int, string>());
// ...
// 5x more of these are the same for all tests
if (isTrue)
mock.Setup(x => x.DisplayOld).Returns(isTrue);
// 5x more of these parameterlized setups
...
}
Теперь, в каждом из моих Я бы сделал вызов Setup (true/false).
Поскольку модульные тесты выполняются параллельно (по умолчанию xUnit), это вызовет любые проблемы с блокировкой? (Предположим, что два теста одновременно называют Setup()).
Если это так:
- , как исправить эту ситуацию?
- Каков правильный подход, если вы хотите иметь один метод (например, setup()) с переданным параметром - для разных сценариев смешения?
Если ваш метод «Setup» автоматически вызывается инфраструктурой тестирования устройства, то да, у вас будут проблемы. Если это действительно вызвано вашими тестами, то это должно быть хорошо, если предположить, что A) издевавшиеся объекты не сохраняются статически (например, на фабрике объектов) и B), издевавшиеся объекты не настраиваются с использованием общих функций (например: '.Returns (myDictionarySharedBetweenTests)'. – Rob
Роб, вы можете прояснить? Да, я вызываю setup() из каждого из моих методов [Fact], и это простая настройка, как в коде выше, где Просто разные сценарии настройки, основанные на флагове bool ex: mock.Setup (x => x.DoSomething). Возвраты (true)/false и т. д. – ShaneKm