首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在Nunit中创建数据库死锁测试吗?

我可以在Nunit中创建数据库死锁测试吗?
EN

Stack Overflow用户
提问于 2008-10-07 15:02:40
回答 6查看 2K关注 0票数 4

在这个asp.net中,我正在清理死锁。我想确保代码正确地处理它们,所以我试图编写触发死锁的NUnit测试……

DAO是按实体拆分的。每个实体都有一组测试,这些测试被Startup()和Teardown()方法包围,这些方法创建了一个事务作用域,然后在测试完成后将其回滚。这对其他一切都很有用,但对死锁完全没用。

如何使用TransactionScope和SQL2000 (包括MSDTC )设置和运行可以可靠再现的“死锁”测试?更多细节:我知道有一种情况,如果两个用户用不同的、特定的数据值调用两个函数,那么就会产生死锁。如何在NUNIT中模拟这种情况,并使死锁始终发生?

是的,我从“为什么不首先停止死锁”的行动计划开始,但是我无法控制死锁可能发生的代码--我只调用函数,它们就会死锁。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-08 21:36:54

如果死锁导致抛出异常,则需要使用Mock对象来模拟抛出的异常。

基本思想是告诉您的模拟对象框架(我喜欢TypeMock)抛出一个异常,如下所示:

代码语言:javascript
复制
MockObject mo = MockManager.MockObject(typeof(MyDeadlockException));
mock.ExpectAndThrow("MyMethod", (MyDeadlockException)mo.Object); 

对于其他的模拟框架来说,这个想法基本上是一样的。

票数 2
EN

Stack Overflow用户

发布于 2008-10-10 03:17:22

这些解决方案大多涉及多个线程。这里有一个不是这样的。

堵塞这些漏洞-复制数据库错误

作者是Alex Kuznetsov。

票数 1
EN

Stack Overflow用户

发布于 2008-10-07 15:18:52

如果您在事务处理过程中的一个测试只做了大约5分钟的“等待”,怎么办?或者,只需编写一个测试,启动一个事务,创建一个新记录,然后在不提交的情况下更新该记录。然后,启动一个新事务,并尝试读取已创建并正在更新的记录。你会在那里陷入僵局。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/178876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档