到目前为止,我一直在使用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);
}
答案 0 :(得分:1)
您要做的是功能集成测试,但不是单元测试。
你应该将IO操作包装成一个带有接口的类,你可以在你的SUT中注入和模拟它。
然后,您可以模拟读取文件的结果并测试其余的业务逻辑。
这有意义吗?
编辑: 为了给你更多的背景:
单位测试字面意思是一次只测试一个单元。如果你测试一个读取文件并进行序列化等的方法,那么你显然测试的不仅仅是一件事。
您不仅测试太多,而且还重复了大量的测试工作,因为您可以假设系统IO库已经过测试,那么您为什么要重复这项工作呢?将它抽象为一个瘦的包装类,并将测试集中在您自己的域逻辑上。