2010-04-21 9 views
5

Mi sono imbattuto in uno strano problema. Nel mio test unitario, voglio controllare le stringhe localizzate. Tuttavia, non riesco a farlo funzionare. Ad esempio, ho creato due risorse: Resource1.resx per l'inglese e Resource1.zh-CN.resx per il cinese. Il progetto di test dell'unità può ottenere solo la stringa di risorse (predefinita?) Inglese. Questo è il codice che sto utilizzando:Il progetto MSTest non può ottenere una stringa localizzata?

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

ho creato un altro progetto regolare (significa che non un progetto MSTest) per assicurarsi che le stringhe localizzate stanno lavorando. Quindi, funziona in un progetto normale, ma non in un progetto MSTest.

Non ha aiutato, anche se ho messo il seguente codice per fare 'ZH-CN' come la cultura corrente della prova di unità: problemi simili

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

Qualcuno ha visto? C'è qualche soluzione?

risposta

10

Non è necessario utilizzare DeploymentItem per assicurarsi che la DLL di localizzazione si trovi nella cartella di test?

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

Oh, fantastico. Questa è la cura! Grazie mille! È interessante però ... il resource.dll è già stato copiato rispettivamente nella directory del progetto di test. L'aggiunta di questo attributo non copia nuovamente il file (dal timestamp). Tuttavia, senza questo attributo, non funziona. – miliu

+0

hahah gesso un altro alla follia del più bello lol –

+0

Bella cattura. Mi piace mettere questo in cima ai miei metodi di test con '[DeploymentItem]' per controllare la mia copia dei file: 'Assert.IsTrue (File.Exists (@" nl \ Project.resources.dll ")," File non trovato ");' – tomfanning

Problemi correlati