使用 EmbeddedResource Reader 读取 json 文件
Using EmbeddedResourceReader to read json file
我的项目中有一个 json 文件,我想正确测试反序列化。我想使用嵌入式资源来做到这一点。但是我无法找到获取 json 文件(目前与我的测试文件位于同一文件夹中)的正确方法。到目前为止,我已经尝试了以下方法:
[Test]
public void JsonDeserializesTest()
{
var reader = new EmbeddedResourceReader(typeof(RatingComponentTests).Assembly, "Components\UserFeedback");
var json = reader.ReadToEnd("Rating.json");
var jsonData = JsonConvert.DeserializeObject<RatingData>(json);
Assert.IsNotNull(jsonData.results);
}
这不适用于 'ReadToEnd' 不是有效方法。我试过 'ReadAsStream' 但这引发了我无法将流转换为字符串的错误。
谁能给我指出正确的方向?谢谢
请确保将 Rating.json
文件的 Build Action
设置为 Embedded Resource
。使用 GetManifestResourceStream
和 StreamReader
的一种解决方案可能是:
[Test]
public void JsonDeserializesTest()
{
//WindowsTestApp is namespace of project
using (Stream stream = Assembly.GetExecutingAssembly().
GetManifestResourceStream("WindowsTestApp.Rating.json"))
using (StreamReader reader = new StreamReader(stream))
{
var jsonFileContent = reader.ReadToEnd();
var jsonData = JsonConvert.DeserializeObject<IList<RatingData>>(jsonFileContent);
Assert.IsNotNull(jsonData);
}
}
//Test class of json data
public class RatingData
{
public int ID { get; set; }
public int Number { get; set; }
}
JSON 文件的示例内容。
//Content of "Rating.json" file
[
{
"ID": 1,
"Number": 1001
},
{
"ID": 2,
"Number": 1002
},
{
"ID": 3,
"Number": 1003
},
{
"ID": 4,
"Number": 1004
}
]
我的项目中有一个 json 文件,我想正确测试反序列化。我想使用嵌入式资源来做到这一点。但是我无法找到获取 json 文件(目前与我的测试文件位于同一文件夹中)的正确方法。到目前为止,我已经尝试了以下方法:
[Test]
public void JsonDeserializesTest()
{
var reader = new EmbeddedResourceReader(typeof(RatingComponentTests).Assembly, "Components\UserFeedback");
var json = reader.ReadToEnd("Rating.json");
var jsonData = JsonConvert.DeserializeObject<RatingData>(json);
Assert.IsNotNull(jsonData.results);
}
这不适用于 'ReadToEnd' 不是有效方法。我试过 'ReadAsStream' 但这引发了我无法将流转换为字符串的错误。
谁能给我指出正确的方向?谢谢
请确保将 Rating.json
文件的 Build Action
设置为 Embedded Resource
。使用 GetManifestResourceStream
和 StreamReader
的一种解决方案可能是:
[Test]
public void JsonDeserializesTest()
{
//WindowsTestApp is namespace of project
using (Stream stream = Assembly.GetExecutingAssembly().
GetManifestResourceStream("WindowsTestApp.Rating.json"))
using (StreamReader reader = new StreamReader(stream))
{
var jsonFileContent = reader.ReadToEnd();
var jsonData = JsonConvert.DeserializeObject<IList<RatingData>>(jsonFileContent);
Assert.IsNotNull(jsonData);
}
}
//Test class of json data
public class RatingData
{
public int ID { get; set; }
public int Number { get; set; }
}
JSON 文件的示例内容。
//Content of "Rating.json" file
[
{
"ID": 1,
"Number": 1001
},
{
"ID": 2,
"Number": 1002
},
{
"ID": 3,
"Number": 1003
},
{
"ID": 4,
"Number": 1004
}
]