У меня есть учетная запись VSTS в регионе США. И у меня есть куча модульных тестов, которые успешно выполняются на моем локальном сервере. Но при развертывании на VSTS все тесты, связанные с датой и временем, не пройдены. Я предполагаю, что это связано с тем, что интерпретация формата даты и времени отличается, поскольку мой локальный использует формат Великобритании. Поскольку существует довольно много тестовых проектов, вместо того, чтобы менять их по отдельности, есть ли способ изменить текущую культуру потока по умолчанию VSTS как Великобританию? Я знаю, что, возможно, смена региона поможет, но как иначе?
Есть ли способ изменить культуру потока по умолчанию в командной службе Visual Studio?
Ответы (1)
Конечно, многое возможно, но было бы гораздо лучше убедиться, что ваше приложение правильно обрабатывает случайное развертывание на машине с другой культурой.
По сути, вы обнаружили неожиданное и нежелательное поведение своего кода или обнаружили, что не можете работать в разных культурах.
Я бы лично попытался сделать код более устойчивым, например. явно задайте правильный язык и региональные параметры и по возможности полагайтесь на InvariantCulture.
Если вам нужен простой выход, вы можете сделать одно из следующих действий:
Используйте инициализатор
Добавьте один метод в свой тестовый проект и украсьте его с атрибутом [AssemblyInitializer]
:
[TestClass()]
public sealed class CultureInitializer
{
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUiCulture = new CultureInfo("en-GB");
}
}
Принудительно настроить параметры культуры профиля пользователя
Я рекомендую вам не делать этого, хотя этого и не следует делать, это может повлиять на другие процессы, запущенные после ваших тестов, изменить форматы вывода или вызвать другие нежелательные действия, подобные тому, что вы испытываете сейчас.
Данные хранятся в реестре в следующем месте:
HKEY_CURRENT_USER\Control Panel\International
Вы захотите изменить значение перед запуском тестов, так как эти значения считываются из системы при запуске приложения, если вы не регистрируете события, которые будут сигнализироваться при изменении этих значений, ваши тесты не увидят разницы.
Запустите скрипт в определении сборки до начала тестов.
Set-Culture -CultureInfo en-GB