微软的Shims无法调试被测试的方法

4

我有一个测试方法,运行时很好,但在调试时会因异常而失败。 下面是测试过的方法和VS Test Runner的输出。异常来自ShimsContext.Create()。

信息:VS 2012 Permium Update2 enter image description here

[TestMethod]
    public void TestResolveDateWithShim()
    {
        using (ShimsContext.Create())
        {
            // arrange
            DateTime someTestTime = new DateTime(2013, 1, 14);

            Fakes.ShimDateHelper.PreviousOrCurrentQuarterEndDateTime =
                time => someTestTime;

            var appCache = new Fakes.StubIAppCache();
            var series = new StubISeries();
            series.KeyGet = () => SeriesKey.MyKey;

            // act
            Report report = new Report(SeriesKey.MyKey, appCache);
            DateTime resolvedDate = report.ResolveDate(series, DateTime.Now);

            // assert
            Assert.AreEqual(someTestTime, someTestTime);
        }

我解决了。问题出在Resharper上。在选项下的Resharper选项卡中,选择工具->单元测试->MSTest,取消“使用传统运行程序”的复选框。现在它可以正常工作了,我仍然可以使用Resharper来帮助我进行测试。如果我禁用Resharper中的所有测试选项,它也可以正常工作,但我想要一些来自Resharper的选项,因为它们非常有帮助。 - user1186050
每当您解决了问题,请将其发布为答案,以便其他用户可以从您的解决方案中受益。 - Ryan Gates
1个回答

6

我解决了这个问题。原因是resharper导致的问题。在resharper选项卡下,找到工具->单元测试->MSTest,在“使用传统运行程序”的复选框中取消勾选即可。现在它可以正常工作了,而且我仍然可以使用resharper来帮助我进行测试。如果我只是禁用resharper中的所有测试选项,它也可以正常工作,但我想要一些来自resharper的选项,因为它们非常有帮助。


仅作为一个侧记 - 我正在使用的是 Resharper 7 版本,它具有相同的 MS Test 选项,但现在标记为“使用 MSTest.exe 运行测试(不建议)”。我不知道确切的 R# 版本何时更改了这个文本,但以防万一有人无法使用您的答案,我想提一下。 - Jason Evans
1
感谢您解决了这个问题。嘿,不要害羞,继续接受您自己的答案吧。 - Evgeniy Berezovsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接