我的一些单元测试之间存在冲突。我有一个带有静态事件的类,当我一次运行每个测试时我没有问题,但是当我批量运行所有测试时,触发事件的测试会因为注册的侦听器而崩溃(有在之前的测试中注册到事件)。
显然我不希望在测试类触发事件时执行事件处理程序,那么最好的解决方案是什么?
我知道如果事件不是静态的,我不会有问题,但如果有其他解决方案,我宁愿不必重新设计它。
在运行测试之前分离所有事件侦听器可能是一个解决方案,但我认为不可能从类外部进行(这似乎很正常,因为我们不希望客户端能够分离所有其他侦听器),并且从内部进行这意味着我必须在类中添加一个方法,仅用于单元测试,这是一种不好的做法。
有没有办法以隔离模式运行测试,以防止其他先前的测试对其产生影响?就像它是在一个完全独立的进程中运行的那样,这样我就不会得到对静态事件的相同引用?(但我仍然需要能够通过简单的点击批量执行所有测试)
感谢您的帮助和想法!
有关信息,我正在使用 Visual Studio 2012 单元测试框架。