У нас была очень странная ошибка, из-за которой запуск нашего полного набора модульных тестов с набором новых UnitTest всегда приводил к сбою последнего тестового запуска в новом разделе (с использованием ReSharper и NUnit для проекта Unity3D). Однако при запуске нового набора все тесты будут пройдены.
Что делало его странным, так это то, что изменение именования неудачных модульных тестов привело бы к тому, что весь набор прошел бы, казалось бы, случайным образом. Мы удалили мир «_Multiple», и он, казалось, работал, пока мы не добавили новый тест, который не прошел, но в нем вообще не было слова «_Multiple». В этот момент я знал, что присвоенное имя было отвлекающим маневром, а не причиной проблемы. Он также был протестирован на нескольких машинах и всегда имел одно и то же поведение.
Мы закончили тем, что сузили сбой, когда он был запущен с набором модульных тестов, который использовал Arg.Any для объекта, отличного от NSubstitute, который в основном выполнялся
Assert.That(!string.Equals("Desired Value", Arg.Any<string>()));
Однажды мы обнаружили, что стало ясно, что я неправильно использую функцию Arg.Any().
Мой вопрос в том, почему изменение имен функций вообще повлияет на тесты? И почему переименование всех тестов просто в test1(), test2(), test3() и т. д. позволяет всем тестам проходить каждый раз, когда более описательное имя не позволяет?