Решили это, следуя инструкциям в принятом ответе на следующий вопрос: Проблема Rails CORS с запросом конечной точки API Ajax
Самый простой способ сделать это должно добавить .config
файл в разделе развертывания по Вашему модульному тесту.
Для этого открываются .testrunconfig
файл от Ваших Объектов Решения. В разделе Deployment добавьте вывод .config
файлы от каталога сборки Вашего проекта (по-видимому bin\Debug
).
Что-либо перечисленное в разделе развертывания будет скопировано в рабочую папку тестового проекта, прежде чем тесты будут запущены, таким образом, Ваш зависимый от конфигурации код будет хорошо работать.
Редактирование: Я забыл добавлять, это не будет работать во всех ситуациях, таким образом, Вы, возможно, должны будете включать сценарий запуска, который переименовывает вывод .config
для соответствия имени модульного теста.
Если Вы используете NUnit, смотрите на это сообщение . В основном у Вас должен будет быть свой app.config в том же каталоге как Ваш .nunit файл.
Я использую NUnit, и в моем каталоге проекта у меня есть копия моего Приложения. Конфигурация, что я изменяю некоторую конфигурацию (пример я перенаправляю к тестовой базе данных...). У Вас должен быть он в тот же каталог протестированного проекта, и Вы будете в порядке.
Используете ли Вы Тестирование системы Команды или NUnit, лучшая практика должна создать отдельную Библиотеку классов для Ваших тестов. Просто добавление App.config к Вашему Тестовому проекту будет автоматически скопировано в Вашу папку мусорного ведра, когда Вы скомпилируете .
, Если бы Ваш код уверен в определенных тестах конфигурации, самый первый тест, я записал бы, проверяет это, конфигурационный файл доступен ( так, чтобы я знал, что я весьма нормален ):
<configuration>
<appSettings>
<add key="TestValue" value="true" />
</appSettings>
</configuration>
И тест:
[TestFixture]
public class GeneralFixture
{
[Test]
public void VerifyAppDomainHasConfigurationSettings()
{
string value = ConfigurationManager.AppSettings["TestValue"];
Assert.IsFalse(String.IsNullOrEmpty(value), "No App.Config found.");
}
}
Идеально, необходимо писать код, таким образом, что объекты конфигурации передаются в классы. Это не только разделяет Вас от проблемы конфигурационного файла, но и она также позволяет Вам тестам записи на различные сценарии конфигурации.
public class MyObject
{
public void Configure(MyConfigurationObject config)
{
_enabled = config.Enabled;
}
public string Foo()
{
if (_enabled)
{
return "foo!";
}
return String.Empty;
}
private bool _enabled;
}
[TestFixture]
public class MyObjectTestFixture
{
[Test]
public void CanInitializeWithProperConfig()
{
MyConfigurationObject config = new MyConfigurationObject();
config.Enabled = true;
MyObject myObj = new MyObject();
myObj.Configure(config);
Assert.AreEqual("foo!", myObj.Foo());
}
}