Garip bir problemle karşılaştım. Ünite testimde yerel dizeleri kontrol etmek istiyorum. Ancak, işe yaramış gibi görünmüyor. Örneğin, iki kaynak oluşturdum: Çince için İngilizce ve Resource1.zh-CN.resx için Resource1.resx. Birim test projesi sadece (varsayılan?) İngilizce kaynak dizgisini alabilir. MSTest projesi yerelleştirilmiş dizeyi alamıyor mu?
ResourceManager actual = new ResourceManager(typeof(LocaleTest.Properties.Resource1));
string name0 = actual.GetString("Name", new CultureInfo("en-US"));
string name1 = actual.GetString("Name", new CultureInfo("zh-CN"));
başka düzenli bir proje oluşturdu lokalize dizeleri çalıştığından emin olmak için (bir MSTest projesi anlamına gelir): Bu kullanıyorum kodudur. Yani, düzenli bir projede çalışıyor, ancak bir MSTest projesinde değil.
Ben birim testinin geçerli bir kültür olarak 'zh-CN' yapmak için aşağıdaki kodu koymak bile yardım etmedi
:
[TestInitialize()]
public void MyTestInitialize()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
}
Herkes gördü benzer sorunlar? Herhangi bir geçici çözüm var mı?
Oh, Great. Bu tedavi! Bir milyona teşekkür ederim! Bu ilginç olsa da ... resources.dll zaten proje sınama dizinine kopyalanmıştır. Bu özniteliği eklemek dosyayı yeniden kopyalamaz (zaman damgasından). Ancak, bu özellik olmadan, işe yaramıyor. – miliu
hahah mstest lol delilik başka bir tebeşir –
Güzel yakalamak. Bunu test yöntemlerimin üst kısmına "DeploymentItem" ile aklımda tutarak dosya kopyalama işlemini kontrol etmeyi seviyorum: "Assert.IsTrue (File.Exists (@" nl \ Project.resources.dll ")," Dosya bulunamadı ") – tomfanning