我有 ac# 类,它使用 Mutex 来控制对全局共享资源的访问。除非创建共享资源,否则不会分配互斥锁。我正在使用该类的部分模拟来隔离对某些获取互斥锁的方法的测试,做一些工作,然后释放它(实际上没有创建共享资源或互斥锁实例)。
我很想知道是否有一种首选的方式来模拟互斥锁。我可以将对 WaitOne 和 ReleaseMutex 的真正调用抽象为类上的方法并模拟它们。我可以在测试中为类的 mutex 成员变量显式分配一个新的 mutex 实例(假设我妥协并让单元测试可以访问 setter)。我可以将互斥锁包装在另一个实现互斥锁方法的并行接口的类中,并将其注入到我的测试类中。
有没有更好的方法来模拟 System.Threading.Mutex 等系统资源?到目前为止,我选择将真正的调用抽象到类上的方法中并模拟它们。