单元测试中的依赖关系

时间:2015-06-17 19:13:00

标签: c# unit-testing nunit

从我对这个主题的阅读,每个单元测试应该是独立的,不依赖于任何其他测试的结果或成功/失败。对我来说很有道理。

如何最好地编写具有依赖关系的测试?举个简单的例子,比如一个文件系统,它有一个你想测试的Create()和Delete()方法。 Delete()方法需要存在要删除的文件,那么它如何满足这个条件呢?调用Create()会引入依赖关系。同样,如果文件已经存在,Create()方法应该失败怎么办?然后,有效的测试需要首先调用Delete()以确保文件不存在。

是否有办法根据正在运行的测试来解决此问题,从而执行条件SetUp和TearDown?或者测试本身应该是同时执行两者的CreateAndDelete测试吗?

1 个答案:

答案 0 :(得分:1)

不依赖于其他测试并不意味着您无法在您正在测试的课程中使用其他方法。因此,对于testDelete(),您可以创建一个文件然后将其删除。对于testCreateFailOnDuplicate(),您可以创建一个文件,然后再次尝试创建它,验证它是否引发了错误。

你不想做的是编写一个testCreate()测试,然后编写一个testDelete()测试,该测试假定testCreate()测试已经运行 - 这是一个糟糕的形式,而不是所有的测试工具保证测试的预测顺序。

希望这有帮助。