如何加速Visual Studio测试资源管理器中的“Run until failure”功能执行速度?
如何加速Visual Studio测试资源管理器中的“Run until failure”功能执行速度?
我完全懂你的痛点——手动跑单次测试时第一次启动慢也就算了,用“Run until failure”居然每次都要等好几秒,这效率实在太低了。结合你的情况(每次要清空测试数据库,不想自己写循环调用),给你几个实用的优化方向:
调整测试初始化逻辑的时机
你现在在测试套件构造函数里做数据库清空,而Visual Studio的“Run until failure”可能每次执行都会重新初始化整个测试类/套件,导致每次都要全量清空数据库,这是很大的开销。建议把全量清空数据库的逻辑移到测试集合的初始化方法里(不同测试框架叫法不同:xUnit用ICollectionFixture,NUnit用[OneTimeSetUp],MSTest用[ClassInitialize]),只在所有测试开始前执行一次。而每次测试后的清理,改用更轻量的方式,比如用数据库事务包裹测试逻辑,测试结束后回滚事务,这样既保证数据干净,又比全量清空快得多。用测试框架自带的重复执行特性替代VS的“Run until failure”
很多主流测试框架都有原生的重复测试功能,比如:- NUnit:给测试方法加
[Repeat(1000)]属性,就能重复执行指定次数;如果是为了捕获偶发失败,还可以用[Retry(3)](失败后重试) - xUnit:可以用第三方扩展包比如
xUnit.Repeat,或者自己写简单的自定义属性
这种方式下,测试框架会复用已有的测试上下文和进程,只有第一次启动会有初始化开销,后续执行都能像批量测试一样快,完美解决你不想自己写循环的问题。
- NUnit:给测试方法加
优化VS测试进程的设置
检查一下Visual Studio测试资源管理器的设置:打开“测试”菜单 → “设置” → “测试设置”,看看是否勾选了“每个测试运行一个进程”。如果是的话,改成“每个测试套件一个进程”,这样“Run until failure”重复执行同一个测试时,不会每次都重启测试进程,能大幅减少启动时间。
备注:内容来源于stack exchange,提问作者GXtal
相关产品推荐
相关产品推荐

