Han*_*ody 5 c# nunit unit-testing
我知道这可能很容易,但由于我刚刚开始学习单元测试,我对所有的可能性有点困惑。
我有一个非常简单的方法,它应该从文件中读取整数(条件是文件仅包含整数,每个整数都存储在新行中)。
public static IEnumerable<int> ReadIntegers(string file)
{
using (var stream = File.OpenText(file))
{
string line;
while ((line = stream.ReadLine()) != null)
{
yield return int.Parse(line);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我继续之前,请不要建议我重构方法,我已经找到了它,并且我想学习如何为这个特定的输入参数和输出值编写单元测试。
我在另一个主题上发现有人建议在测试用例中创建一个测试文件,然后尝试将预期结果与实际结果进行比较,如下所示:
[Test]
public void ShouldValidateReadingOfTheFile()
{
string path = @"E:\TestFile.txt";
using (var sw = File.AppendText(path))
{
sw.WriteLine(1);
sw.WriteLine(100);
}
var expected = new List<int>() { 1, 100 };
var actual = TestProject.Merge.ReadIntegersFromFile(path);
Assert.IsTrue(expected.SequenceEqual(actual));
}
Run Code Online (Sandbox Code Playgroud)
我想问你这是一个不好的做法吗?你有不同的方法吗?关于此方法的不同测试还有其他想法吗?谢谢!
我认为你可以这样做unit-testing
,但我建议你也测试特殊情况。
例如
null
作为文件名创建测试文件是一种常见的做法。