ResourceManager.GetString завершается с ошибкой в ​​модульных тестах - PullRequest
1 голос
/ 14 августа 2011

Я создал сборку MyResources с двумя resx:

  • MyResources.resx
  • MyResources.en.resx

Внутри сборки Iдобавлен класс-обработчик, содержащий оболочку GetString внутри класса ResHandler:

    public string GetResString(string key)
    {            
        return _manager.GetString(key, _culture);
    }

_culture - это просто свойство, которое можно установить извне:

    public void ChangeCulture(CultureInfo newCulture)
    {            
        _culture = newCulture;
    }

Если явызовите этот код из, скажем, консольного приложения, все работает нормально:

    var res = ResHandler.GetInstance(Guid.NewGuid().ToString());
    //change the culture to "en"
    res.ChangeCulture(new CultureInfo("en"));
    Console.WriteLine(res.GetResString("TXT_0001"));

Этот код записывает английскую версию в консоль.Однако, если я вызову точно такой же код из метода unit-test, появится содержимое MyResources.resx.Что здесь не так?По какой-то причине юнит-тесты не могут это сделать?

1 Ответ

1 голос
/ 14 августа 2011

Помните, что спутниковые сборки хранятся в подкаталоге каталога, в котором находится EXE.Как «en-US» или «en» для английского языка.Проблема в том, что ваш тест выполняется под другим EXE, mstest.exe, а не с app.exe.Поэтому он не найдет спутниковую сборку.Я думаю, что вы можете это исправить, используя Deployment в настройках теста, не уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...