我们处于这样的情况,即用作我们的测试环境db的数据库必须保持干净。这意味着每个测试都有一个清理方法,它将在每次执行后运行,它会从db中删除测试所需的每个数据。
我们使用Specflow并实现我们的目标,即如果未停止测试执行,则使用此工具可以保持数据库清理。但是,在开发过程中,测试用例发生时,测试执行停止,因此数据库中生成的数据不会被清除。
问题出现了当我按下VS 2013中的“停止执行”时会发生什么? VS如何停止执行?会叫什么方法?可以自定义吗?
specflow使用MSTest框架,没有选项可以更改它。
答案 0 :(得分:0)
我不知道这对你有多实用,但正如我所看到的,你有几个选择:
第一个是最简单的,并且将确保当您在VS中停止执行时,它不会影响下一次测试运行(同一测试),因为在测试运行时将清除任何剩余数据。
第二个设置更复杂(运行时更慢),但意味着您可以并行运行测试(如果使用像NCrunch这样的工具,这样做很好),并且它们不会干扰每个其他
我过去所做的就是让数据库层可以切换,这样你就可以在大部分时间内在内存数据中运行测试,然后偶尔切换到数据库来检查实际的读写内容没有被打破
如果您使用EF6并且可以将IDBSet<T>
切换为内存IQueryable<>
实现支持的其他实现