MSTest:阻止测试,直到另一个测试缓存数据

时间:2018-12-06 00:17:52

标签: c# mstest

我正在为Api客户端编写单元测试。一个测试ListAll()从Api加载给定帐户的所有条目,另一个测试Get()加载特定的订单。

Get()需要一个条目的唯一ID,因此我想缓存从ListAll()收到的条目,并将其中一个用于Get()测试,而不是调用{{1 }}在ListAll()测试中。

我已经阅读了有序测试的概念,但是我宁愿选择一种忽略测试运行顺序的解决方案。理想情况下,它将阻塞Get()测试,直到条目被缓存为止;或者,如果测试是单独运行的,则在继续之前将求助于列出所有条目。我已经考虑过在测试类中使用专用的Get()字段来实现此目的,但到目前为止,这种方法似乎不可行。

1 个答案:

答案 0 :(得分:0)

通常建议您的测试彼此独立。

但是,如果出于速度原因需要在测试之间共享数据,则可以使用两个测试都调用的LoadDataIfNeeded()函数。第一次运行LoadDataIfNeeded()时,它将加载数据,将数据放入静态成员中并返回它;第二次它只是从静态成员返回已经加载的数据。如果希望测试以任何顺序正确运行,请在加载共享数据后修改共享数据,以确保所有测试都不会相互干扰。