xUnit Культурное тестирование - PullRequest
0 голосов
/ 26 мая 2018

Я создал новый тестовый проект xunit в Visual Studio 2017 минуту назад.Проект содержит пакет xunit nuget версии 2.3.1 для net-core 2.0

. Я видел использование аннотации в xUnit Sample , однако при попытке использовать аннотацию UseCultureЯ столкнулся с ошибкой, подобной этой:

Не удалось найти тип или имя пространства имен 'UseCultureAttribute'.

Чего мне не хватает?

[Fact, UseCulture("en-US")]
public void Test1()
{
    double a = 5.01;
    string aStr = a.ToString();

    Assert.Equal("5.01", aStr);
}

1 Ответ

0 голосов
/ 27 марта 2019

На момент написания статьи я не смог найти это ни в .NET Core 2.0.Вот пример (на основе ссылки , приведенной в комментариях к вашему вопросу).Вам просто нужно добавить пакет xunit.core nuget для этой работы.

В моем примере перед тестом устанавливается значение InvariantCulture (и впоследствии возвращается), вы можете настроить его на нужную вам культуру или использоватьболее универсальный вариант, указанный в ссылке .

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class UseInvariantCultureAttribute : BeforeAfterTestAttribute
{
    private CultureInfo originalCulture;
    private CultureInfo originalUICulture;

    public override void Before(MethodInfo methodUnderTest)
    {
        this.originalCulture = Thread.CurrentThread.CurrentCulture;
        this.originalUICulture = Thread.CurrentThread.CurrentUICulture;

        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
        Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
    }

    public override void After(MethodInfo methodUnderTest)
    {
        Thread.CurrentThread.CurrentCulture = this.originalCulture;
        Thread.CurrentThread.CurrentUICulture = this.originalUICulture;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...