ayo*_*234 7 .net c# mstest .net-core asp.net-core
我有一个方法,我试图测试它使用我的“local.settings.json”中的环境变量
private static string _environmentVar = Environment.GetEnvironmentVariable("envirnomentVarConfig");
public string MyMethod()
{
var result = DoStuff(_environmentVar)
return result;
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我正在调用此方法,并且在调试时,我可以看到 _environmentVar 为空。
我需要在测试中设置 environmentVarConfig 吗?如果是这样怎么办?
ayo*_*234 21
通过使用以下方法在测试中设置变量来解决此问题:
Environment.SetEnvironmentVariable("environmentVarConfig", "environmentVarValue");
Run Code Online (Sandbox Code Playgroud)
Zar*_*rat 12
您可以在文件中指定环境变量.runsettings:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<EnvironmentVariables>
<YOUR_VARIABLE>Value for your variable</YOUR_VARIABLE>
<SOME_OTHER_VARIABLE>With another Value</SOME_OTHER_VARIABLE>
</EnvironmentVariables>
</RunConfiguration>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过实现DataCollector提供环境变量ITestExecutionEnvironmentSpecifier
// Add a reference to nuget package `Microsoft.TestPlatform.ObjectModel`
// The assembly name must end with `Collector` (i.e. match `*collector.dll`)
[DataCollectorFriendlyName("my own example collector")]
[DataCollectorTypeUri("datacollector://myown/examplecollector/1.0")]
public class MyDataCollector : DataCollector, ITestExecutionEnvironmentSpecifier
{
public override void Initialize(
XmlElement configurationElement,
DataCollectionEvents events,
DataCollectionSink dataSink,
DataCollectionLogger logger,
DataCollectionEnvironmentContext environmentContext)
{
// inspect configurationElement for your custom settings
}
public IEnumerable<KeyValuePair<string, string>> GetTestExecutionEnvironmentVariables()
{
return new Dictionary<string, string>
{
["YOUR_VARIABLE"] = "your value",
};
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以通过以下文件配置数据收集器.runsettings:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<TestAdaptersPaths>path/where/to/find/your/collector</TestAdaptersPaths>
</RunConfiguration>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="my own example collector" uri="datacollector://myown/examplecollector/1.0">
<Configuration>
<SomeSettingHere/>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)