2010-04-21 6 views
5

Me encontré con un problema extraño. En mi prueba de unidad, quiero verificar las cadenas localizadas. Sin embargo, parece que no puedo hacer que funcione. Por ejemplo, creé dos recursos: Resource1.resx para inglés y Resource1.zh-CN.resx para chino. El proyecto de prueba de la unidad solo puede obtener la cadena de recursos en inglés (¿predeterminada?). Este es el código que estoy usando:¿El proyecto MSTest no puede obtener una cadena localizada?

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")); 

creé otro proyecto regular (no significa un proyecto MSTest) para asegurarse de que las cadenas localizadas están trabajando. Entonces, funciona en un proyecto regular, pero no en un proyecto MSTest.

No ayudó incluso si pongo el siguiente código para hacer 'zh-CN' como la actual cultura de la prueba unitaria: problemas similares

[TestInitialize()] 
public void MyTestInitialize() 
{ 
    Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN"); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN"); 
} 

Alguien ha visto? ¿Hay algún trabajo alrededor?

Respuesta

10

No es necesario utilizar DeploymentItem para asegurarse de que la DLL de localización se encuentra en la carpeta de prueba?

[TestMethod()] 
[DeploymentItem(@"bin\Debug\fr\Proj.resources.dll", "fr-CA")] 
public void TestDialogLocalization(){ 
// blah 
} 
+0

Oh, Gran. Esa es la cura! ¡Gracias un millón! Aunque es interesante ... resources.dll ya se ha copiado para probar el directorio del proyecto, respectivamente. Agregar este atributo no vuelve a copiar el archivo (desde la marca de tiempo). Sin embargo, sin este atributo, no funciona. – miliu

+0

hahah tiza otra a la locura de mstest lol –

+0

Buena captura. Me gusta poner esto en la parte superior de mis métodos de ensayo con '[DeploymentItem]' para comprobar la cordura mi archivo de copia: 'Assert.IsTrue (File.Exists (@ "nl \ Project.resources.dll"), "Archivo no encontrado ");' – tomfanning

Cuestiones relacionadas