如何对文件读取功能进行单元测试?

时间:2015-02-24 23:21:40

标签: c# file unit-testing

到目前为止,我一直在使用AAA方法,我希望将其部署到一组“模拟”中。测试以测试文件是否存在,以及是否可以读取文件等。

我使用的代码类型如下:

[TestMethod]
public void Mul_TestValues0and0_EvaluatesTo0() {
    // Arrange
    var testArgument1 = 0;
    var testArgument2 = 0;
    var expectedResult = 0;

    // Act
    var actualResult = testedClass.Mul(testArgument1, testArgument2);

    //Assert
    var failMessage = String.Format(@"{0} * {1} evaluates to {2}, actual test result was {3}", testArgument1, testArgument2, expectedResult, actualResult);
    Assert.AreEqual(expectedResult, actualResult, failMessage);
}

1 个答案:

答案 0 :(得分:1)

您要做的是功能集成测试,但不是单元测试。

你应该将IO操作包装成一个带有接口的类,你可以在你的SUT中注入和模拟它。

然后,您可以模拟读取文件的结果并测试其余的业务逻辑。

这有意义吗?

编辑: 为了给你更多的背景:

单位测试字面意思是一次只测试一个单元。如果你测试一个读取文件并进行序列化等的方法,那么你显然测试的不仅仅是一件事。

您不仅测试太多,而且还重复了大量的测试工作,因为您可以假设系统IO库已经过测试,那么您为什么要重复这项工作呢?将它抽象为一个瘦的包装类,并将测试集中在您自己的域逻辑上。