取消测试后清理

Mo *_* H. 8 c# mstest visual-studio specflow visual-studio-2013

我目前正在通过visual studio进行测试.在运行所有测试之前,我会自动创建一组具有已知凭据的用户,并在运行结束时删除这些用户.但是,有时我需要在中途取消我的测试.在这些情况下,测试永远不会有机会进行清理,这意味着测试运行中遗留了虚假的用户信息,并可能导致下一次测试运行崩溃(当它尝试将用户信息添加到数据库中时).无论如何,即使测试被取消,还是强制visual studio/mstest运行清理方法?

我知道一个选项是进行测试检查并确保用户信息不存在,如果确实在创建新用户之前删除了它.但这仍然无法解决取消的测试运行留下不需要的测试数据的问题.

更新:

对于错误传达很抱歉,但是在测试开始时清理数据不是一种选择.我给出了一个非常简单的问题视图,但简单地说,我没有简单的方法来确保在测试开始时不存在测试数据.所有清理必须在测试结束时进行.

Leo*_*lev 11

那是不可能的.您最好找到一个替代解决方案,例如使用单独的数据库在每次测试运行之前测试和清理所有数据,使用固定的测试用户集或使用某个标记标记测试数据.检查集成测试中的隔离数据库数据 Jimmy Bogard.

没有内置方法可以更改MSTest默认行为.从理论上讲,您可以编写利用TestExecution.OnTestStopping事件的MSTest扩展,但这不是一个简单的过程,需要更改注册表.而且,很多人抱怨它不起作用.

还有MSTest V2,MSTest的新版本,具有新的可扩展性点.但看起来你不能用这个点改变取消行为,只写属性装饰器.请参阅扩展MSTest V2.

你不能使用AppDomain.CurrentDomain.ProcessExitProcess.GetCurrentProcess().Exited事件,因为取消似乎杀死了测试运行过程.

NUnit目前也不支持此功能.请参阅相关的NUnit测试适配器在VS取消测试运行问题上运行TearDowns.


kin*_*005 7

我不是在测试结束时调用清理函数,而是在每次测试开始时调用我的,以解决这个问题.


Ali*_*oza 5

在创建数据之前执行清理,这将确保您无论发生什么都没有剩余数据.当然,只有在运行设置之前能够识别任何剩余数据时,才有可能实现这一点.