![](/img/trans.png)
[英]How can I force Localization Culture to en-US for whole applicaiton in Xamarin
[英]C# How can I force Localization Culture to en-US for tests project
如何在 VS2008 中為 C# 中的測試項目指定具體的本地化文化? 我正在構建具有在 web.config 中指定的非標准文化的 Asp .Net MVC 應用程序,但如何為該項目的單元測試設置相同的文化?
你可以設置
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
在單元測試框架中標記為“測試初始值設定項”的方法中。
如果您使用的是 xUnit,您可以將UseCultureAttribute
添加到您的項目中,定義如下:
https://github.com/xunit/samples.xunit/blob/master/UseCulture/UseCultureAttribute.cs
要使用它:
[Fact]
[UseCulture("en-US")]
public void MyTest()
{
// ...
}
如果要為整個測試套件指定CultureInfo
而不必將其添加到每個TestClass
的TestInitializer
中,則可以使用AssemblyInitializeAttribute 。
在測試類(用屬性[TestClass]
修飾的類)中,添加設置DefaultThreadCurrentCulture
和DefaultThreadCurrentUICulture
的靜態方法,然后用[AssemblyInitialize]
修飾該方法。
當您的測試套件啟動時,此方法將在運行任何 TestMethods 之前運行一次。 (注意:您的測試套件中可能只有一個使用此屬性修飾的此類方法。)
這是一個使用專用測試類的示例,該類僅用於設置文化,但您可以將其放在任何測試類中:
[TestClass]
public static class InitializeCulture
{
[AssemblyInitialize]
public static void SetEnglishCultureOnAllUnitTest(TestContext context)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
}
}
對於 nUnit 3,您可以使用屬性[SetUICulture("en-us")]
。 這將強制此單個測試的文化。
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
以下方法對我有用:
[TestClass]
public class MyTestClass
{
[TestInitialize]
public void InitializeTestClass()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
}
.......... [other unit tests]
}
沒有類似於 web.config 中的設置適用於您的情況。
您可以嘗試按照此處其他答案的建議為每個線程設置它。
或者,如果您使用在 VS.NET 中創建的資源,代碼生成會在名為“Culture”的 Resource 類上創建一個靜態屬性。 您可以在單元測試的 Suite 啟動方法中進行設置。 這將適用於您運行的所有測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.