小编Fin*_*ter的帖子

如何使用Fakes Framework垫片模拟/隔离VS 2012中的内部类?

所以,问题是我的程序集中有一堆内部类,我想要测试的类使用它们.由于访问器已经从VS2012中删除了,我使用起来很好,[InternalsVisibleTo]而且效果很好......除非我试图填充我的内部类,否则它们对于Fakes框架是不可见的.我还应该注意,我正在处理的特定类是一个带静态方法的静态类,我真的不想重构所有东西以使用接口(并使用存根),因为组织中的阻力到了那个级别的重构.

有没有办法让这些内部成员可以在Visual Studio 2012中使用填充程序上下文,而无需依靠接口(字面上)一切?

internalsvisibleto microsoft-fakes visual-studio-2012

9
推荐指数
1
解决办法
6455
查看次数

我在sqlserver2008中的全文索引选项是否显示为灰色?

我在sqlserver2008中的全文索引选项是否显示为灰色?

它是单独安装吗?

full-text-search sql-server-2008

8
推荐指数
4
解决办法
1万
查看次数

MSTest单元测试(VS 2012)与SQL Server,间歇性主键冲突

我正在处理一个非常奇怪的问题.最初,我认为这是清理测试数据的问题......但是在完全重构我的测试数据清理代码并仍然看到完全相同的行为之后......我很茫然.

我有各种类别的245个单元测试方法.每个类都有自己独特的测试数据,我初始化这些对象,然后在每个测试方法中,数据通常被插入到数据库中,然后通过测试进行操作.每个测试类都有一个ClassCleanup方法,用于清除数据库中的所有测试数据,ClassCleanup也在TestInitialize上运行,以确保在运行任何其他测试方法之前清除所有内容.

当我使用VS 2012测试资源管理器"全部运行"时,22个测试失败.它们都因主键约束违规的某些变化而失败.这意味着,当他们为这些测试初始化​​数据时,数据没有从该类中的先前测试方法中清除.如果我重新运行所有测试,我每次都会失败.这是相当可重复的.无论我运行多少次测试.这些相同的27个测试因主键违规而失败.

然而,奇怪的是,如果我只重新运行那些失败的测试,那么只有9个测试失败.这也是可重复的,这意味着,无论我只运行了多少次这27个先前失败的测试,14个将失败,其余的将通过.这继续,因为我只运行失败的测试,直到我达到一个没有测试失败的点.还应该注意的是,如果我单独运行每个测试类,一切都会通过.

我知道这看起来如何.

"你显然没有清理你的测试数据." 如果是这种情况,那么我应该看到每次运行都会失败,无论如何.那些27次测试每次运行都会失败,而不仅仅是当我运行其他所有内容时.

"你不能在类之间拥有唯一的主键,而且事情没有得到清理." 往上看.即使我在我的课程中重复了主键(我没有,因为我亲自三重检查了各个类中测试数据的主键的唯一性),因为这些测试不是在不同的线程上并发运行的(已经通过记录ThreadId验证了,任何给定测试的清理代码都会清除重复的数据,无论如何.

"你不能使用连接池." 不,实际上我是.我已经使用SQL事件探查器验证了请求肯定是池化的.此外,由于这些测试并非并行运行,因此只有一个连接线程.

"你不应该使用连接池." 嗯,是的,我应该,因为底层代码库支持各种Web项目,但为了参数我尝试运行禁用连接池的所有测试(在连接字符串中使用Pooling = false),我得到完全相同的结果.行为没有任何改变.

"你的当地环境一定有问题." 我在其他同事的开发盒(顺便使用SQL 2012)上运行这些测试也得到了相同的结果.这不是我的环境,甚至是我的SQL Server版本所特有的.

"你应该尝试从命令行运行mstest." 已经这样做了.结果相同.

如果有人遇到过这样的事情,请告诉我.我知道必须有一些简单的我缺少,因为这种问题通常就是这种情况,但我已经尽可能多地考虑了这个问题.

sql-server mstest sql-server-2008 visual-studio-2012

5
推荐指数
1
解决办法
596
查看次数

动态SQL和存储过程优化

我已经读过在存储过程中使用动态SQL会损害存储过程的性能.我猜理论是存储过程不会存储通过EXEC或sp_executesql执行的SQL的执行计划.

我想知道这是否属实.如果确实如此,我是否会遇到多个嵌套IF块的问题,每个块都有一个不同的SQL语句"版本"?

sql-server stored-procedures dynamic-sql sql-server-2008

2
推荐指数
1
解决办法
1万
查看次数