Чтобы добавить информацию поверх ответа Криса. Вы можете сослаться на этот пост Как получить переменную окружения в Xunit Test
Мне кажется, довольно приятно реализовать это. Вам просто нужно создать другой класс, который будет использоваться всеми остальными классами. В Xunit они называли это Fixture. См. Ссылку Общий контекст между тестами
. В этом классе я прочитаю свой конфигурационный файл из моего целевого проекта тестирования и задаю переменные среды. См. Ссылку Как получить переменную среды в Xunit Test
Пример кода
public class SharedDataFixture: IDisposable
{
public SharedDataFixture()
{
using (var file = File.OpenText("D:\\TargetProject\\local.settings.json"))
{
var reader = new JsonTextReader(file);
var jObject = JObject.Load(reader);
var variables = jObject.GetValue("Values").ToString();
var keyValuePairs = JsonConvert.DeserializeObject<Dictionary<string, string>>(variables);
foreach (var pair in keyValuePairs)
{
Environment.SetEnvironmentVariable(pair.Key, pair.Value);
}
}
string keyVaultName = System.Environment.GetEnvironmentVariable("AZURE_KEY_VAULT");
//Retrieving my json values using environment variable set
azureLoginInfo = new AzureLoginInfo(keyVaultName);
// ... other data
}
public void Dispose()
{
// ... clean up test data from the database ...
}
public AzureLoginInfo azureLoginInfo { get; private set; }
}
Мой класс тестирования Xunit (я немного изменил его, чтобы приспособить его к своему использованию):
public class CreateAzureResourcesTests : IClassFixture<SharedDataFixture>
{
AzureLoginInfo azureLoginInfo;
public CreateAzureResourcesTests (SharedDataFixture fixture)
{
this.fixture = fixture;
}
// ... write test ...
}