单元测试中的依赖

Dependencies in Unit Tests

根据我读到的有关该主题的内容,每个单元测试都应该是独立的,不依赖于任何其他测试的结果或 success/failure。对我来说很有意义。

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

有没有一种方法可以根据 运行 哪个测试进行有条件的设置和拆卸来解决这个问题?或者测试本身应该是一个同时执行两者的 CreateAndDelete 测试?

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

您不想做的是先编写一个 testCreate() 测试,然后再编写一个假设 testCreate() 测试已经完成的 testDelete() 测试 运行 -- 这是错误的形式,另外并非所有测试工具 gua运行 都符合预测的测试顺序。

希望对您有所帮助。