Для решения этой проблемы важно придерживаться определенных правил при написании модульных тестов.Некоторые из правил просты в применении и применении, в то время как другим могут потребоваться дополнительные соображения в зависимости от ваших обстоятельств.
В каждом тесте должен быть установлен уникальный набор данных.Это особенно важно, когда вы работаете с постоянными данными, например, в базе данных.Когда тест создает пользователя с определенным идентификатором пользователя, напишите тест, чтобы он каждый раз использовал другой идентификатор пользователя.Например (C #):
var user = new User(Guid.NewGuid());
В конце каждого теста очистите данные, созданные тестом.Например, в методе удаления данных удалите созданные вами данные (C #, NUnit):
[TearDown]
public void TheTearDownMethod() {
_repository.Delete(_user);
}
Возможны изменения, например, при тестировании базы данных вы можете загрузить резервную копию непосредственно перед запускомтестовый набор.Если вы тщательно разрабатываете свои тесты, вам не нужно очищать базу данных после каждого теста (или подмножества тестов).
Чтобы попасть туда, где вы сейчас находитесь (каждый тест проходит при запуске в изоляции), туда, где выхотел бы начать с запуска первых двух тестов последовательно, сделать их успешными.Затем выполните три последовательно, сделайте их успешными и т. Д. В каждой итерации определите, какой предыдущий тест приводит к сбою добавленного теста.Разрешите эту зависимость.Таким образом, вы узнаете много нового о своих тестах, а также о том, как избежать написания тестов, которые зависят друг от друга.
Как только пакет проходит один патч, запускайте его часто, чтобы вы могли определить зависимость как можно раньше.
Это не охватывает все сценарии и варианты, но, мы надеемся, даст вам руководство по созданию того, что у вас уже есть.