[英]unit testing a file writer function
我有一个函数,它将学生的详细信息作为输入,并将他们的报告卡写入xml文件。 当我试图在vs2008中创建单元测试时,我看到了一条消息 - “一个不返回值的方法无法验证”。 我的函数不返回它只写入文件并返回的值。
我该如何为这个函数编写测试?
[TestMethod()]
public void StoreInformationTest()
{
StudentSettings target = new StudentSettings(); // TODO: Initialize to an appropriate
StudentSettings settings = null; // TODO: Initialize to an appropriate value
target.StoreInformation(settings);
Assert.Inconclusive("A method that does not return a value cannot be verified.");
}
提前致谢,
问候,约翰
首先,如果大叔叔Visual Studio告诉你无法测试你的方法,那就不一定是真的。
您应该将输出作为字符串返回到文件中,或者您的方法应该将TextWriter作为参数。 在前一种情况下,您可以使用模拟框架,如另一个答案中所述,为测试中的方法提供一个假的TextWriter对象。
通过良好的职责分离,可以轻松地将文件替换为内存流。 写入内存流而不是文件。 然后你可以测试它的内容。 但正如其他人所提到的,代码示例可能会揭示其他需求。
更新:
谢谢你的代码。 看起来你的StudentSettings课程做得很多。 将xml写入函数分离到自己的类中,从中提取接口,并将其作为构造函数参数注入到类中。 然后你可以在测试期间用你自己的模拟替换它。
代码生成器只是建议它不能根据其返回值(void)来验证您的测试,这非常有意义。 我认为其他人提到这更像是一个占位符。 在实际编写测试时,您需要确定您的通过标准是什么。 你可以这么简单;
Assert.IsTrue(File.Exists(filePath));
如果您关心的是文件存在,或者您可以深入了解它,请验证其内容等等。 这完全取决于你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.