如何解决设置后静态上下文为null
此.Net Core 3.1(NUnit 3)测试在Visual Studio 2019下工作。
但是一旦我使用JetBrains Rider,测试就会失败,因为静态属性(DataA
)在大多数情况下都会返回null
。
有什么主意,怎么解决这个问题?
public static class ClassA
{
public static string DataA { get; set; }
public static string DataB { get; set; }
public static void SetAppConfig(string appSettingsPfad)
{
IList<JProperty> appSettings = JsonConvert.DeserializeObject<JToken>(appSettingsPfad).Select(j => (JProperty)j).ToList();
var appKonfiguration = typeof(ClassA).GetProperties(BindingFlags.Public | BindingFlags.Static);
foreach (JProperty property in appSettings)
{
var appKonfigurationProperty = appKonfiguration.SingleOrDefault(p => p.Name.Equals(property.Name,StringComparison.OrdinalIgnoreCase));
var value = ((JValue)property.Value).Value;
if (appKonfigurationProperty != null)
appKonfigurationProperty.SetValue(null,Convert.ChangeType(value,appKonfigurationProperty.PropertyType));
}
}
}
[TestFixture]
public class DummyTest
{
[Test]
public void TestA()
{
LoadAppConfig();
// DataA returns null here
Console.WriteLine(ClassA.DataA);
new BusinessLogicClass.DoSomething();
// [...]
}
private void LoadAppConfig() {
// [...]
string appSettings = File.ReadAllText(jsonConfigFiles.Single());
ClassA.SetAppConfig(appSettings);
// here it works and a result is the proper string
Console.WriteLine(ClassA.DataA);
// [...]
}
}
public class BusinessLogicClass {
public void DoSomething() {
// DataA returns null here
Console.WriteLine(ClassA.DataA);
// [...]
}
}
(我已将此代码简化到最低限度,原代码将在进行空检查后运行为Exception)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。